Zpo-2-wyk-Slajd23

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Iteratory: specyfikacja

Iteratory: specyfikacja


Celem iteratora jest udostępnienie wszystkich elementów kolekcji w sposób niezależny od samej kolekcji i jej implementacji. Dzięki temu w bibliotece Java Collections wszystkie kolekcje można przejrzeć w identyczny sposób. Iterator jest obiektem stanowym: zapamiętuje bieżący element w kolekcji, a wywołanie określonej metody (w Javie jest to next ()) powoduje przesunięcie tego wskaźnika na kolejny element. Koniec kolekcji jest określany za pomocą metody hasNext (), która zwraca true tylko wówczas, gdy istnieje jeszcze nieodwiedzony element.

Biblioteka zawiera dwa rodzaje iteratorów: zwykłe, implementujące interfejs java . util . Iterator , które pozwalają jedynie przeglądać wszystkie elementy oraz usuwać bieżący element, oraz listowe, implementujące interfejs java . util . ListIterator dziedziczący po interfejsie Iterator. Ten ostatni posiada znacznie rozszerzone możliwości, wynikające z semantyki listy: stałą kolejność dostępu do elementów, możliwość zmiany kierunku, a także dodawania elementów. Warto zwrócić uwagę, że o ile każdy iterator ma możliwość usuwania bieżącego elementu kolekcji, o tyle tylko iteratory listowe mogą dodawać elementy. Jest to świadoma decyzja autorów: nie można przewidzieć konsekwencji dodawania elementów do każdej kolekcji poprzez iterator.

W przypadku listy najprawdopodobniej obie metody (iterator () i listIterator ()) zwracają iteratory tego samego typu – dzięki korzystaniu z nich przez interfejsy ich funkcjonalność jest ograniczona tylko do specyfikacji interfejsu. Jest to ciekawy przykład hermetyzacji implementacji klasy przy użyciu interfejsu.

Szczegółowy opis funkcjonalności Iteratora zostanie przedstawiony podczas wykładu o wzorcach projektowych.


<< Poprzedni slajd | Spis treści | Następny slajd >>