Programowanie średnio-zaawansowane #19: iterator

Pojęcie iteratora jest ostatnim, które związane jest z kolekcjami. Są one alternatywą dla klasyczny pętli for oraz foreach.

public static void main(String[] args) {
	List<String> movies = new ArrayList<>();
	movies.add("Indiana Jones");
	movies.add("Avengers");
	movies.add("Star Wars");

	Iterator<String> iterator = movies.iterator();
	while (iterator.hasNext()) {
		System.out.println(iterator.next());
	}
}

Iteratory dobrze sprawdzają się wraz z pętlą while, ponieważ warunek stopu tej pętli jest typu boolean, także świetnie można go ustalić korzystając z metody hasNext. W przeciwieństwie pętli for, nie wskazuje się tu numeru indeksu, aby skorzystać z kolejnego wartości na liście. Wystarczy użyć metody next.

Ciekawostka. Jeśli napiszesz taki kod:

while (movies.iterator().hasNext()) {
	System.out.println(movies.iterator().next());
}

To niestety nie zadziała. Wydaje się, że kod jest tożsamy z powyższym, ale w rzeczywistości jest drobnym błędem, ponieważ iterator będzie otwierał się za każdą iteracją.

Dodaj komentarz