Competentie: Ik kan de enhanced for-loop gebruiken om een ArrayList langs te lopen.
Specifieke leerdoelen:
while
-lus om over een ArrayList te itereren op basis van een index en elementen op te halen.while
-lus een index gebruikt als teller om elementen op positie te benaderen.enhanced for-loop
het itereren over een ArrayList vereenvoudigt zonder een expliciete index te gebruiken.enhanced for-loop
en kunt itereren over verschillende lijsten.enhanced for-loop
automatisch door de hele lijst itereert, waarbij de index of positie van elementen wordt verborgen.enhanced for-loop
de toegang tot de index beperkt en het manipuleren van de ArrayList verbiedt, waardoor het beperkt is tot op lezen gebaseerde operaties zoals bekijken of zoeken.De opdrachten kunnen gevonden worden in de losse modulen.
Als je eenzelfde bewerking wilt uitvoeren op alle elementen in een ArrayList is een loop onontbeerlijk. We laten hier twee manieren zien die bruikbaar zijn voor een ArrayList.
Een belangrijke eigenschap van de ArrayList is dat deze kan groeien en krimpen, afhankelijk van het gebruik. Dit betekent echter dat je bij het maken van een loop over de lijst hier rekening mee moet houden. Je weet immers nooit precies hoeveel elementen er op het moment van code uitvoer in de lijst zitten.
Met behulp van een while-loop kan je eenvoudig een lus schrijven die een index gebruikt om door de lijst heen te lopen. Deze index verwijst naar de plek in de lijst waar een bepaald element staat.
The enhanced for-loop (vrij vertaald: “verbeterde” for-loop) kan gebruikt worden om op een eenvoudiger manier door een lijst te lopen, zonder je zorgen te hoeven maken over de indices en de bijbehorende administratie. Dit komt echter wel tegen een prijs: je kan bijv. niet eenvoudig meer opvragen op welke positie je nu bent (je hebt geen “teller” meer in de lus) en ook mag je geen wijzigingen meer maken aan de lijst terwijl je er overheen aan het loopen bent.
Beide methodes hebben voordelen en nadelen.
De while-loop maakt gebruik van het indexnummer van een element in de ArrayList. Door indexnummer te vergelijken met de lengte van de lijst, kan het stop-moment bepaald worden.
Stel we hebben een ArrayList
1. int index = 0;
2. while(index<names.size()){
3. SaxionApp.printLine(names.get(index));
4. index++
5. }
Hieronder een korte weergave van wat er gebeurt in deze code:
regel 1 initialiseert de variabele index met 0.
Iteratie 1:
Iteratie 2:
Iteratie 3:
Einde loop.
Met de enhanced for-loop wordt de hele lijst doorlopen zonder dat de programmeur het stoppunt hoeft te definieren. Je moet hiervoor wel wat flexbiliteit in het gebruik van de lijst opgeven, namelijk dat je niet precies weet op welke positie een element staat en dat je de lijst niet, tijdens de lus, mag aanpassen. Een enhanced for-loop wordt daarom ook alleen veel gebruikt in stukken code waarmee je bijv. wat moet opzoeken in de lijst of gewoon iets wil doen met alle elementen in de lijst.
###Voorbeeld
We hebben weer een ArrayList
1. for(String singleName : names){
2. SaxionApp.printLine(singleName);
3. }
Het for-statement is als volgt opgebouwd:
Hieronder een korte weergave van wat er gebeurt in deze code:
Iteratie 1:
Iteratie 2:
Er is geen verdere iteratie. De for-loop houdt dus zelf bij hoeveel iteraties nodig zijn om de hele lijst langs te gaan.