Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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.

...

Code Block
languagejava
String string = "123";
for (int i = 0; i < string.length(); i++) {
	char c = string.charAt(i);
	// gjør noe med c her...
}

Løkke for å gå gjennom tegnene i en String

Code Block
languagejava
List<String> strings = Arrays.asList("en", "to", "tre");
for (int i = strings.size() - 1; i >= 0; i--) {
	String element = strings.get(i);
	// gjør noe med element her...
}

Løkke for å gå gjennom elementene i en List baklengs.

Code Block
languagejava
List<String> strings = Arrays.asList("en", "to", "tre");
for (int i = 0; i < strings.size(); i = i + 2) {
	String element = strings.get(i);
	// gjør noe med element her...
}

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.

...