...
Merk at Java har to typer løkker, generelle for-løkker og det som kalles for-each-løkker, fordi den går gjennom hvert element i en samling. Begge varianter bruker for-nøkkelordet, og for-each-varianten er såkalt syntaktisk sukker (eng: syntactic sugar), siden den kun er en kortform for noe en kan få til den generelle-for-løkka.
Generell for-løkke
Hvis en datastruktur ikke har en passende iterator, men f.eks. støtter oppslag med en posisjon eller indeks, så kan en falle tilbake på den generelle for-løkka. Dette brukes f.eks. for å løpe gjennom alle tegnene i en String, slik som vist under til venstre. Du må også bruke den generelle varianten, hvis du skal gå gjennom elementene i en annen rekkefølge enn standard-iteratoren for en datastruktur, f.eks. baklengs eller annenhvert element. Under i midten og til høyre ser du løkker for disse to tilfellene for en Java-liste.
...
Løkke for å gå gjennom tegnene i en String |
Løkke for å gå gjennom elementene i en List baklengs. |
Løkke for å gå gjennom annenhvert element i en List. |
For-each-løkker
I en del løkker er poenget å behandle et sett med data, så betingelsen koker ned til om det er mere data igjen. Istedenfor å gjøre det manuelt med en teller som øker og sjekkes mot antall data-elementer, så har en del språk en egen kontrollstruktur som gjerne kalles for-each, for å gå gjennom alle data-elementer i en samling. En slik for-each-løkke holder både styr på om det er flere data-elementer igjen og sørger for å sette en løkke-variabel til neste element i rekka:
...
- next(): returnerer neste elementer, tar ett steg forover og utløser StopIteration-unntaket når slutten er nådd.
Bruk av for-each på egne datastrukturer
I Java brukes Iterable-grensesnittet som brobygger til for-each-syntaksen.
...