For-each Java-silmukan avulla voit selata tau­lu­koi­ta ja kokoelmia nopeammin ja tur­val­li­sem­min, välttää virheitä ja parantaa koodin luet­ta­vuut­ta. Tässä ope­tus­oh­jel­mas­sa selitämme for-each-me­ne­tel­män rakenteen ja edut tarkemmin ja näytämme, miten silmukkaa käytetään koo­dis­sa­si.

Mihin for-each Java-silmukkaa käytetään?

For-each-silmukkaa käytetään monissa ti­lan­teis­sa, joissa Java-ke­hit­tä­jät joutuvat työs­ken­te­le­mään tau­lu­koi­den kanssa. Yleinen käyt­tö­tar­koi­tus on esi­mer­kik­si taulukon tiettyjen ele­ment­tien tu­los­ta­mi­nen tai etsiminen. For-each-silmukkaa voidaan käyttää myös ArrayList-tyyp­pi­se­nä to­teu­te­tun luettelon ele­ment­tien lä­pi­käy­mi­seen. Jo­kai­sel­la lä­pi­käyn­nil­lä voit suorittaa au­to­maat­ti­sia ma­ni­pu­loin­te­ja ta­val­li­sil­la Java-ope­raat­to­reil­la ilman, että joudut kir­joit­ta­maan erillistä lause­ket­ta jo­kai­sel­le ele­men­til­le.

Toisin kuin Java-kielessä käy­tet­tä­väs­sä for-sil­mu­kas­sa, for-each-sil­mu­kas­sa ei tarvitse ottaa huomioon taulukon indeksiä tai kokoa. Näiden seikkojen huo­mioi­mat­ta jät­tä­mi­nen tar­koit­taa, että vältytään riskiltä, että indeksi olisi voimassa olevan alueen ul­ko­puo­lel­la. For-each-silmukka käyttää si­säi­ses­ti ite­raat­to­ria kutsumaan taulukon tai luettelon jokaisen elementin yksi ker­ral­laan. Ite­raat­to­ri laskee au­to­maat­ti­ses­ti taulukon tai luettelon läpi ja lopettaa silmukan, kun kaikki elementit on käyty läpi.

Jos kuitenkin tarvitset indeksin pääsyn seuraavan tai edellisen elementin muok­kaa­mi­seen, voi olla jär­ke­väm­pää käyttää for-silmukkaa tai while-silmukkaa.

Mikä on for-each Java-silmukan syntaksi?

Java-kielessä for-each-silmukan pe­rus­ra­ken­teet ovat seuraavat:

for (type item : array | collection) {
// code block
}
Java
  • array/collection: Taulukon tai kokoelman nimi
  • item: Jokainen taulukon tai kokoelman elementti on mää­ri­tet­ty tälle muut­tu­jal­le
  • type: Taulukon tai kokoelman tie­to­tyyp­pi

Silmukan sisällä koo­di­loh­ko suo­ri­te­taan jo­kai­sel­la ite­raa­tiol­la.

Esi­merk­ke­jä for-each Java-silmukan käytöstä

Alla näytämme, kuinka for-each-me­ne­tel­mää käytetään näytön tu­los­tuk­sen ja arit­meet­tis­ten ope­raa­tioi­den avulla.

Ele­ment­tien tu­los­ta­mi­nen konsoliin

For-each-silmukan avulla voit näyttää taulukon tai kokoelman jokaisen elementin näytöllä.

class Main {
    public static void main(String[] args) {
        // array
        String[] names = {"Sophie", "Mia", "Harrison", "Elliot", "Melissa"};
        // for each loop
        for (String name: names) {
            System.out.println(name);
        }
    }
}
In the console, we get the output:
```Java
Sophie
Mia
Harrison
Elliot
Melissa
Java

On myös mah­dol­lis­ta tulostaa luettelon elementit ana­lo­gi­ses­ti. Silmukan läh­de­koo­di pysyy muut­tu­mat­to­ma­na.

import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        // list
        ArrayList<String> names = new ArrayList<String>();
        names.add( "Sophie" );
        names.add( "Mia" );
        names.add( "Harrison" );
        names.add( "Elliot" );
        names.add( "Melissa" );
        // for each loop
        for(String name: names){
            System.out.println(name);
        }
    }
}
Java

Jo­kai­sel­le nimelle luodaan merk­ki­jo­no luet­te­los­ta:

Sophie
Mia
Harrison
Elliot
Melissa
Java

Taulukon tai kokoelman ele­ment­tien summan las­ke­mi­nen

Java-menetelmä for-each helpottaa arit­meet­tis­ten ope­raa­tioi­den, kuten taulukon tai luettelon ele­ment­tien yh­teen­las­ke­mi­sen, suo­rit­ta­mis­ta. Ope­raat­to­rit on lin­ki­tet­ty muut­tu­jaan, joka toimii pai­kan­pi­tä­jä­nä jo­kai­sel­le ele­men­til­le silmukan koo­di­loh­kos­sa.

class Main {
    public static void main(String[] args) {
        // array
        int[] numbers = {10, 34, 7, 19, -28};
        int sum = 0;
        // addition
        for (int number: numbers) {
            sum += number;
        }
        System.out.println("Result = " + sum);
    }
}
Java

Taulukon numerot lisätään jär­jes­tyk­ses­sä muut­tu­jaan sum, joka on aiemmin mää­ri­tel­ty silmukan ul­ko­puo­lel­la. Tulostus on:

Result = 42
Java

4e47bfbf2fbb477673aeb57481bd5f30

Siirry pää­va­lik­koon