Trzeci raz z rzędu piszę do Was z tego samego fotela. Odejdźmy teraz od złożonych rzeczy i skupmy się na czymś prostszym. Jest jeszcze tyle tematów w języku Java, a nie zostały one omówione. Taka pętla "foreach" na przykład. Nazywana jest również pętlą rozszerzoną. Debiut miał miejsce właśnie w Javie i pozwala na wygodniejszy sposób obsługi wszelkich tablic i list, czyli zmiennych przechowujących wiele danych. To będzie ostatni wpis na dzisiaj.

PĘTLA "FOREACH" KONTRA "ZWYKŁE FOR"

Najlepiej i w tej kwestii porównać sobie jedno z drugim. Podstawowa pętla "for" wygląda tak:

for (int i = 0; i < N; ++i)
{
	// instrukcje
}

natomiast pętla rozszerzona wygląda w taki sposób:

for ([typ klasy] element : [tablica lub lista tego samego typu klasy])
{
	// instrukcje
}

Pętla "foreach" (ang. "dla każdego") polega na obsłudze danej struktury przechowującej wiele elementów bez użycia zmiennej iteracyjnej. Oprócz tego, skraca zapisy przy uzyskiwaniu dostępu do pojedynczego argumentu. Uprzedzam, że nie ma żadnej pomyłki, samo "for" pisze się zarówno w jednej, jak i w drugiej. Możecie się zapytać czy nie widzieliście już takiej pętli, ale z całym słowem "foreach"? Macie rację, tylko pełną nazwę wprowadzono dopiero w języku C# gdy powstał pięć lat później po Javie. W okresie wprowadzania jej do Javy korzystało się ze stwierdzenia "pętla rozszerzona". To tak na marginesie, żeby służyło jedynie rozwianiu wątpliwości spowodowanej podobieństwem nazw. Przejdźmy teraz do kodu korzystającego z tej odmiany pętli.

KOD ŹRÓDŁOWY Z PĘTLĄ ROZSZERZONĄ

Oto użycie prostej kolekcji "ArrayList" przechowującej liczby zmiennoprzecinkowe, tak dla małej odmiany. W środku znajduje się pętla "foreach". Przeanalizujcie go sobie na spokojnie:

  • KLASA "Main"
public class Main
{
	public static void main(String[] args)
	{
		new ExtendedLoop();
	}
}
  • KLASA "ExtendedLoop"
import javaX.util.ArrayList;

public class ExtendedLoop
{
	private ArrayList<Double> numbers = new ArrayList<>();

	public ExtendedLoop()
	{
		addNumbers();
		sumNumbers();
	}

	private void addNumbers()
	{
		numbers.add(69.8);
		numbers.add(18.65);
		numbers.add(32.666);
	}

	private void sumNumbers()
	{
		double total = 0.0;

		for (Double n : numbers)
		{
			total += n;
		}

		System.out.println("Suma liczb zmiennoprzecinkowych znajdujących się w kolekcji wynosi " + total);
	}
}

Informuję, że w imporcie jest literówka z powodu niemożności zapisu artykułu przez Joomlę (musi być usunięta litera "X"!).

Domyślnie, w tradycyjnej pętli "for" musielibyśmy podać zmienną iteracyjną, wyznaczyć granicę za pomocą metody "size" (w przypadku "ArrayList") i poprzez zaangażowanie jeszcze jednej funkcji "get", wydobyć konkretny argument. W sytuacjach, gdy nie jest nam potrzebny indeks, pętla "foreach" okaże się dużo czytelniejsza i wygodniejsza.

Pętla "foreach" - pętla rozszerzona

Pętla "foreach" (rozszerzona) umożliwia skrócenie zapisu dotyczącego uzyskiwania dostępu do pojedynczego argumentu tablicy / listy, który w tradycyjnej pętli jest nieunikniony.


Dużo lżejszy artykuł i teraz tylko takie postaram się robić.

PODOBNE ARTYKUŁY