Rozdział 6 - Tablice - Pętla for each

W poprzednim rozdziale poznaliśmy trzy rodzaje pętli: while, do..while, oraz for. Języka Java posiada jeszcze jeden rodzaj pętli: for-each. Ten ostatni rodzaj pętli poznajemy dopiero teraz, ponieważ jest on dedykowany do pracy z tablicami i innymi kolekcjami.

Pętla for-each pozwala na łatwe iterowanie po tablicy bądź kolekcji. Jej składnia jest następująca:

for (typ nazwaZmiennejPetli : tablica_badz_kolekcja) {
  // instrukcje
}

W pętli tej definiujemy zmienną pętli oraz jej typ, a po dwukropku podajemy tablicę (bądź kolekcję), którą chcemy przeprocesować. Typ zmiennej pętli powinien być zgodny z typem, jakie tablica może przechowywać. Zmienna pętli w każdym obiegu będzie zawierała wartość kolejnego elementu tablicy. Pętla kończy się, gdy przejdzie przez wszystkie elementy tablicy.

Spójrzmy na przykład programu, który korzysta z pętli for-each, by wypisać elementy tablicy:

Nazwa pliku: ForEachWypiszElementy.java
public class ForEachWypiszElementy {
  public static void main(String[] args) {
    int[] liczby = { 1, 5, 20 };

    for (int x : liczby) {
      System.out.print(x + ", ");
    }
  }
}

W tym programie zmienna pętli nazywa się x i w każdym obiegu pętli przyjmuje wartość z tablicy liczby. Będą to, kolejno, liczby: 1, 5, oraz 20, ponieważ takie liczby przechowuje tablica liczby.

Zauważmy, że typ int zmiennej x jest zgodny z typem wartości, jakie przechowuje tablica liczby.

Ten program wypisze na ekran:

1, 5, 20,

Pętla for-each ma dwie istotne cechy:

  • zawsze procesuje ona elementy w kolejności od pierwszego do ostatniego,
  • zawsze procesowane są wszystkie elementy tablicy (o ile nie skorzystamy z instrukcji break).

Pętla for-each jest wygodną alternatywą dla pętli for, ponieważ jest krótsza – nie musimy sami zadbać o nadanie zmiennej pętli odpowiedniej wartości, napisać warunku pętli, ani instrukcji kroku – wszystko dzieje się automatycznie. Wystarczy napisać ciało pętli.

Jeżeli potrzebujemy przeiterować po elementach tablicy, a indeks nie jest nam potrzebny, to powinniśmy stosować pętlę for-each, ponieważ jest prostsza w zapisie niż jej alternatywy. Nieraz zdarza się jednak, że potrzebujemy przeiterować tylko po części elementów, bądź w innej kolejności, lub jest nam potrzebny indeks – wtedy będziemy chcieli skorzystać np. z pętli for.

W pętlach for-each możemy korzystać z instrukcji break oraz continue tak samo, jak w poprzednio poznanych rodzajach pętli.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Nie musisz podawać swojego imienia, e-mailu, ani strony www, aby opublikować komentarz. Komentarze muszą zostać zatwierdzone, aby były widoczne na stronie.