Zalecane, 2024

Wybór Redakcji

Różnica między Iterator a ListIterator w Javie

Iterator i ListIterator to dwa spośród trzech kursorów Java. Zarówno Iterator, jak i ListIterator są zdefiniowane przez Collection Framework w pakiecie J ava.Util . ListIterator jest interfejsem potomnym interfejsu Iteratora. Główna różnica między Iterator i ListIterator polega na tym, że Iterator może przemierzać elementy w zbiorze tylko w kierunku do przodu, podczas gdy ListIterator może przemierzać elementy w zbiorze zarówno w kierunku do przodu, jak i do tyłu .

Omówmy nieco więcej różnic między Iterator i ListIterator za pomocą tabeli porównawczej pokazanej poniżej.

Wykres porównania

Podstawa do porównaniaIteratorListIterator
PodstawowyIterator może przemierzać elementy w kolekcji tylko w kierunku do przodu.ListIterator może przemierzać elementy kolekcji w kierunku do przodu i do tyłu.
DodajIterator nie może dodawać elementów do kolekcji.ListIteror może dodawać elementy do kolekcji.
ModyfikowaćIterator nie może modyfikować elementów w kolekcji.ListIterator może modyfikować elementy w kolekcji za pomocą funkcji set ().
TrawersIterator może przemierzać mapę, listę i zestaw.ListIterator może przechodzić tylko przez obiekty listy.
IndeksIterator nie ma metody uzyskania indeksu elementu w kolekcji.Za pomocą ListIterator można uzyskać indeks elementu w kolekcji.

Definicja Iteratora

Iterator to interfejs w strukturze kolekcji . Służy do przechodzenia przez elementy kolekcji. Iterator pozwala na powtarzanie każdego elementu w kolekcji jeden po drugim, pozyskiwanie elementów z kolekcji lub usuwanie elementów z kolekcji. Możesz zauważyć, że nie możesz modyfikować żadnego elementu w kolekcji za pomocą Iteratora.

Iterator ma metodę iterator (), która zwraca iterator na początek kolekcji. Po uzyskaniu iteratora od początku kolekcji, przechodzenie przez elementy w kolekcji ustanawia pętlę wywołującą funkcję hasNext () za każdym razem, gdy pętla przechodzi przez iteracje. Funkcja hasNext (), jeśli zwraca true, oznacza, że ​​następny element znajduje się w kolekcji, a jeśli zwróci wartość false, oznacza to, że wszystkie elementy są wykonywane. Następnie wewnątrz pętli możesz uzyskać każdy element w Kolekcji za pomocą next () . Metoda next () zwraca następny element kolekcji.

Wada:

Używając Iteratora możesz przemierzać kolekcję tylko w kierunku do przodu.
Używając Iteratora, nie można manipulować ani modyfikować elementów w kolekcji.

Definicja ListIterator

ListIterator jest interfejsem w strukturze Collection i rozszerza interfejs Iteratora . Za pomocą ListIterator możesz przemierzać elementy kolekcji zarówno w kierunku do przodu, jak i do tyłu . Możesz także dodawać, usuwać lub modyfikować dowolny element w kolekcji. W skrócie, możemy powiedzieć, że usuwa wady Iteratora.

Metody ListIterator są następujące:

hasNext () : Jeśli return zwraca true, oznacza to, że w kolekcji jest więcej elementów.
next () : Zwraca następne elementy listy.
nextIndex () : Zwraca indeks kolejnych elementów na liście.
hasPrevious () : Zwraca wartość true, jeśli w kolekcji znajdują się elementy w przeciwnym kierunku.
previous () : Zwraca poprzedni element w kolekcji.
previousIndex () : Zwraca indeks poprzedniego elementu w kolekcji.
remove () : Usuń element z kolekcji.
set () : Modyfikuje element w kolekcji.
add () : Dodaje nowy element w kolekcji.

Kluczowe różnice między Iteratorem a ListIteratorem

  1. Podstawową różnicą między Iterator i ListIterator jest to, że obie są kursorami, Iterator może przemierzać elementy w kolekcji tylko w kierunku do przodu. Z drugiej strony ListIterator może poruszać się zarówno w kierunku do przodu, jak i do tyłu.
  2. Za pomocą iteratora nie można dodać żadnego elementu do kolekcji. Ale za pomocą ListIterator można dodawać elementy do kolekcji.
  3. Używając Iteratora, nie można usunąć elementu z kolekcji, w której, jak można usunąć element z kolekcji za pomocą ListIterator.
  4. Używając Iteratora możesz przemierzać wszystkie kolekcje, takie jak Mapa, Lista, Zestaw. Ale przez ListIteror możesz przemierzać tylko obiekty zaimplementowane w List.
  5. Możesz pobrać indeks elementu za pomocą Iteratora. Ale ponieważ List jest sekwencyjny i oparty na indeksach, możesz pobrać indeks elementu używając ListIterator.

Wniosek:

Możesz użyć ListIterator, gdy musisz w szczególności przejść przez obiekt List zarówno w kierunku do przodu, jak i do tyłu. Inaczej możesz użyć Iteratora, ponieważ obsługuje on wszystkie obiekty kolekcji typów.

Top