Java #36: interfejs Iterator

Pojęcie iteratora jest ostatnim, które związane jest z kolekcjami. Są one alternatywą dla klasyczny pętli for oraz foreach. Każda z kolekcji Java, która dziedziczy po interfejsie Collection, posiada w swoim API operację o nazwie 'iterator’. Interfejs Iterator jest bardzo prostą strukturą udostępniającą właściwie tylko trzy metody: next, hasNext, oraz remove.

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());
	}
}

Przeglądanie rekordów

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ą.

Usuwanie elementów

Oprócz przeglądania kolejnych rekordów, interfejs Iterator umożliwia też usuwać rekordy używając metody remove.

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

Interfejs iterator po swojemu

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

Stay in the Loop

Get the daily email from CryptoNews that makes reading the news actually enjoyable. Join our mailing list to stay in the loop to stay informed, for free.

Ostatnio dodane

- Advertisement - spot_img

Powiązane wpisy