Różnica Między Wyliczeniem A Iteratorem

Różnica Między Wyliczeniem A Iteratorem
Różnica Między Wyliczeniem A Iteratorem

Wideo: Różnica Między Wyliczeniem A Iteratorem

Wideo: Różnica Między Wyliczeniem A Iteratorem
Wideo: ZiZ #2 Jaka jest różnica między napięciem i natężeniem prądu? [Kurs elektroniki dla początkujących] 2024, Listopad
Anonim

Wyliczenie a Iterator

Istnieje wiele struktur danych, które działają jako kolekcje w Javie, takie jak wektory, tabele Hash i klasy, które implementują strukturę kolekcji Java (tj. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap i LinkedHashSet). Istnieje wiele sposobów na iterację poszczególnych elementów obiektów w Javie. Java udostępnia dwa interfejsy, które ułatwiają to zadanie. Enumeration i Iterator to dwa interfejsy znajdujące się w pakiecie java.util, które zapewniają funkcjonalność wyliczania poprzez sekwencje lub obiekty z zestawem elementów. Enumerator został wprowadzony w JDK 1.0, a Iterator, który został wprowadzony w JDK 1.2 praktycznie powiela funkcjonalność modułu Enumerator (w ramach Collections Framework).

Co to jest wyliczenie?

Enumeration to publiczny interfejs w Javie, wprowadzony w JDK 1.0, który zapewnia możliwość wyliczania poprzez sekwencje elementów. Znajduje się w pakiecie java.util. Gdy interfejs Enumeration jest implementowany przez obiekt, ten obiekt może generować sekwencję elementów. Interfejs wyliczenia ma dwie metody. Metoda hasMoreElements () sprawdzi, czy to wyliczenie zawiera więcej elementów, a nextElement () zwraca następny element w sekwencji (jeśli jest jeszcze co najmniej jeden). Innymi słowy, wywołując kolejno metodę nextElement (), programista może uzyskać dostęp do poszczególnych elementów w serii. Na przykład, aby wydrukować wszystkie elementy w Vector v1 przy użyciu modułu Enumerator, można użyć następującego fragmentu kodu.

Wyliczenie e = v1.elements ();

While (e.hasMoreLements ()) {

System.out.println (e.nextElement ());

}

Enumerator może również służyć do definiowania strumienia danych wejściowych do obiektów SequenceInputStream.

Co to jest Iterator?

Iterator to publiczny interfejs w pakiecie Java.util, który umożliwia iterowanie przez elementy obiektów kolekcji, które implementują strukturę kolekcji (takie jak ArrayList, LinkedList itp.). Zostało to wprowadzone w JDK 1.2 i zastąpiło moduł wyliczający w ramach Java Collections Framework. Iterator ma trzy metody. Metoda hasNext () sprawdza, czy w kolekcji są pozostałe elementy, a metoda next () zwraca następny element z serii. Metoda remove () może służyć do usuwania bieżącego elementu z kolekcji źródłowej. Na przykład, aby wydrukować wszystkie elementy w Vector v1 za pomocą Iteratora, można użyć następującego fragmentu kodu.

Iterator i = v1.elements ();

While (i.hasNext ()) {

System.out.println (e.next ());

}

Jaka jest różnica między wyliczeniem a iteratorem?

Chociaż Enumeration i Iterator to dwa interfejsy znalezione w pakiecie java.util, które pozwalają na iterację / wyliczanie elementów serii, mają one swoje różnice. W rzeczywistości Iterator, który został wprowadzony po wyliczeniu, zastępuje wyliczenie w ramach kolekcji Java. W przeciwieństwie do wyliczania, Iterator jest odporny na awarie. Oznacza to, że współbieżne modyfikacje (do podstawowej kolekcji) nie są dozwolone, gdy używany jest Iterator. Jest to bardzo przydatne w środowiskach wielowątkowych, w których zawsze istnieje ryzyko jednoczesnych modyfikacji. W przypadku jednoczesnej modyfikacji obiekt Iterator zgłosi wyjątek ConcurrentModificationException. Iterator ma krótsze nazwy metod w porównaniu do Enumerator. Ponadto,iterator posiada dodatkową funkcjonalność usuwania elementów podczas iteracji (co nie jest możliwe przy użyciu Enumeratora). Tak więc, jeśli istnieje potrzeba usunięcia elementów z kolekcji, jedyną opcją, którą można rozważyć, jest Iterator.

Zalecane: