Enhanced for-loop i Java – Loopa igenom en Array

Enhanced (förstärkt) for-loop i Java är ett hjälpmedel för att loopa igenom alla element i en array.

Vad är en Enhanced for-loop i Java?

Enhanced (förstärkt eller förenklad) for-loop är ett hjälpmedel för att enkelt och snabbt gå igenom alla element i ett fält (array). Den har liknande egenskaper som den “vanliga” for-loopen som vi lärde oss om i kapitel 4, men loopar igenom elementvis istället för ett specifikt antal gånger. Vi ska börja med att se hur vi deklarerar en enhanced for-loop. Sedan visar vi hur loopen fungerar för att avslutningsvis se på skillnader mellan en enhanced for-loop och en vanlig for-loop.

Hur skapar man en enhanced for-loop i Java?

Bilden nedan visar syntaxen för att skapa en enhanced for-loop.

Notera att vi använder kolon (:) mellan den variabel vi skapar och den array vi vill arbeta med.

Hur fungerar en enhanced for-loop i Java?

I Java är det möjligt att iterera, gå igenom alla element i en array med hjälp av en for-loop. Man behöver alltså inte hålla reda på hur stort eller litet fältet är eftersom en enhanced for-loop går igenom alla element automatiskt. För att skapa en enhanced for-loop använder vi oss av syntax som vi såg tidigare:

for (datatyp element : array) { 
    operation/påstående 
}

Först anger vi det reserverade ordet for. Innanför parantes anger vi vilken datatyp arrayen har, följt av ett variabelnamn (i detta fall element). Denna variabeln är endast definierad inuti loopen. Sedan anger man ett kolon (:), följt av den array man vill iterera igenom. Innanför måsvingarna skriver vi sedan de operationer vi vill göra. I varje iteration, kommer variabeln element innehålla värdet på varje index i arrayen.

I Java är det möjligt att iterera, gå igenom alla element i en array med hjälp av en for-loop.

Vi ska nedan se ett kortare exempel där vi kan utföra samma uppgift med hjälp av en enhanced for-loop och den vanliga for-loopen.

Exempel 1

Vi börjar med ett enkelt exempel där vi loopar igenom ett fält som innehåller fyra namn.

String[] names = {"Jonas", "Lisa", "Gustav", "Elin"};

Vi har alltså en array som heter names som innehåller element av typen String (textsträngar). Nu kan vi enkelt loopa igenom alla element i arrayen:

for (String val : names) { 
    System.out.println("Hej " + val); 
}

Vilket i detta fall ger utskriften:

Hej Jonas
Hej Lisa
Hej Gustav
Hej Elin

Variabeln val ändras alltså varje iteration i samma ordning som de är placerade i arrayen.

Exempel 2 – Summera alla element

I detta exempel ska vi testa att summera alla heltal i en array. Först skapar vi en variabel med namn total och en array med namn field som innehåller fyra heltal:

int total = 0; 
int [] field = {20, 33, 40, 55};

För att räkna ut summan av alla tal i arrayen, kan vi loopa igenom alla tal med en enhanced for-loop och spara summan i variabeln total:

for (int element : field){ 
    total = total + element; 
}

Det är självklart möjligt att använda den “vanliga” for-loopen. Nackdelen då är att vi själva måste hålla reda på längden på arrayen:

for (int i = 0; i < field.lenght; i++){ 
    int element = field[i]; 
    total = total + element; 
}

Båda looparna fungerar dock precis lika bra och ger samma svar.

Skillnader Enhanced for-loop vs for-loop i Java

Det finns ett par skillnader mellan enhanced for-loop och den vi kallar för den “vanliga” for-loopen, med vissa för- och nackdelar. För att veta vilken av de två sätten som är att föredra, är det bra att känna till de begränsningar som enhanced for-loop har. Alla skillnader vi ska se kommer ifrån att den vanliga for-loopen ger mer kontroll medans enhanced for loop ger mer bekvämlighet.

  • En Enhanced for-loop utförs i följd, med andra ord, det finns ingen räknare som det finns i den vanliga for-loopen. I den vanliga for-loopen kan du ändra steget till att räkna t.ex. i = i + 2, dvs att loopa varannat element i en array. Detta är inte möjligt i en enhanced for-loop.
  • Enhanced for-loop kan endast iterera (gå i genom) arrayen i inkrementell ordning, det vill säga den ökar stegvis. Vi kan alltså inte konfigurera den att gå i baklänges genom arrayen. I den vanliga for-loopen kan vi konfigurera räknaren baklänges med hjälp av, i- – , men en enhanced for-loop går alltid igenom arrayen i den ordning som elementen ligger i.
  • Enhanced for-loop har inte tillgång till arrayens index, vilket innebär att du inte kan ersätta elementet med indexet. Den vanliga for-loopen har däremot tillgång till index, vilket då möjliggör att du kan byta ut något element i arrayen.

Det var ett par skillnader som är bra att känna till. För att summera, om du behöver mer kontroll, välj den vanliga for-loopen. Om du däremot inte behöver den nivå av kontroll, välj det bekvämligare alternativet Enhanced for-loop.

Vad tyckte du om sidan?

Lämna gärna feedback och hjälp oss göra sidan bättre

Feedback gör oss bättre!

Lämna gärna feedback om vad du tyckte om avsnittet!