Java średnio zaawansowane #19: interfejs 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ą.

Oprócz przeglądania kolejnych rekordów możesz też usuwać rekordy używając metody remove.

while (iterator.hasNext()) {
	iterator.remove();
}

Jeśli interesuje Cię, jak samemu napisać własny iterator, przejrzyj tą lekcję: https://developeronthego.pl/java-zaawansowane-4-wlasny-iterator

Link do kodu: https://github.com/developeronthego/java-middle/tree/master/src/main/java/middle/lesson19

Może Ci się również spodoba

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *