Pojďme diskutovat některé další rozdíly mezi Iterator a ListIterator pomocí srovnávací tabulky uvedené níže.
Srovnávací graf
Základ pro srovnání | Iterátor | ListIterator |
---|---|---|
Základní | Iterátor může procházet prvky ve sbírce pouze směrem dopředu. | ListIterator může procházet prvky v kolekci vpřed i vzad. |
Přidat | Iterator nemůže přidat prvky do kolekce. | ListIteror může přidat prvky do kolekce. |
Upravit | Iterátor nemůže měnit prvky v kolekci. | ListIterator může modifikovat prvky v kolekci pomocí sady (). |
přejít | Iterátor může procházet mapou, seznamem a sadou. | ListIterator může procházet pouze objekty seznamu. |
Index | Iterátor nemá žádnou metodu pro získání indexu prvku v kolekci. | Pomocí ListIterator můžete získat index prvku v kolekci. |
Definice Iterátoru
Iterator je rozhraní v rámci kolekce . Používá se k průchodu sběrnými prvky. Iterátor vám umožňuje opakovat jednotlivé prvky ve sbírce jeden po druhém, získávat prvky ze sbírky nebo odstraňovat prvky z kolekce. Můžete si všimnout, že nemůžete měnit žádný prvek v kolekci pomocí Iterátoru.
Iterator má metodu iterator (), která vrací iterátor na začátek kolekce. Jakmile dostanete iterátor na začátek kolekce pak přejděte prvky v kolekci vytvořit smyčku, která volá hasNext () při každém opakování smyčky. Pokud má parametr hasNext () hodnotu true, znamená to, že další prvek je v kolekci, a pokud vrátí hodnotu false, znamená to, že všechny prvky jsou překročeny. Pak uvnitř smyčky můžete získat každý prvek v kolekci pomocí next () . Metoda next () vrací další prvek kolekce.
Nevýhody:
Pomocí Iterátoru můžete procházet kolekci pouze dopředu.
Pomocí Iterátoru nemůžete manipulovat nebo měnit prvky v kolekci.
Definice ListIterator
ListIterator je rozhraní v rámci kolekce a rozšiřuje rozhraní Iterator . Pomocí ListIterator můžete procházet prvky kolekce v obou směrech dopředu i dozadu . Můžete také přidávat, odebírat nebo upravovat libovolný prvek v kolekci. Stručně řečeno, můžeme říci, že odstraňuje nevýhody Iterátoru.
Metody ListIterator jsou následující:
hasNext () : Pokud vrátí true, potvrdí, že v kolekci je více prvků.
next () : Vrací další prvky seznamu.
nextIndex () : Vrací index dalších prvků v seznamu.
hasPrevious () : Vrátí hodnotu true, pokud jsou v kolekci prvky v opačném směru.
previous () : Vrací předchozí prvek v kolekci.
previousIndex () : Vrací index předchozího prvku v kolekci.
remove () : Odstraní prvek ze sbírky.
set () : Upravuje prvek v kolekci.
add () : Přidá nový prvek do kolekce.
Klíčové rozdíly mezi Iterator a ListIterator
- Základní rozdíl mezi Iterator a ListIterator je, že oba jsou kurzor, Iterator může procházet prvky v kolekci pouze dopředu. Na druhé straně může ListIterator procházet směrem dopředu i dozadu.
- Pomocí iterátoru nelze do kolekce přidat žádný prvek. Ale pomocí ListIterator můžete přidat prvky do kolekce.
- Pomocí Iterator nelze odebrat prvek v kolekci, kde, jako prvek můžete odebrat z kolekce pomocí ListIterator.
- Pomocí Iterator můžete procházet všechny sbírky, jako je Map, List, Set. Podle ListIteroru však můžete procházet seznamem implementovaných objektů.
- Pomocí prvku Iterator můžete načíst index prvku. Ale protože seznam je sekvenční a založený na indexu, můžete načíst index elementu pomocí ListIterator.
Závěr:
ListIterator můžete použít, když musíte pohybovat objektem Listu směrem dopředu i dozadu. Jinak můžete použít Iterator, protože podporuje všechny objekty typu kolekce.