Rozdíl mezi rozhraním Iterator a Enumeration v Javě

Autor: Laura McKinney
Datum Vytvoření: 2 Duben 2021
Datum Aktualizace: 5 Smět 2024
Anonim
Rozdíl mezi rozhraním Iterator a Enumeration v Javě - Technologie
Rozdíl mezi rozhraním Iterator a Enumeration v Javě - Technologie

Obsah


Tři kurzory, které se používají k přístupu k prvkům z libovolné kolekce jeden po druhém, jsou Výčet, Iterator a ListIterator. Iterator a Enumerator jsou však určeny k provedení stejné práce. Stále se od sebe liší v tom smyslu, že Enumeration má přístup k prvkům ve sbírce pouze pro čtení. Na druhé straně může Iterator číst a odebírat prvky ze sbírky. Důležitým rozdílem mezi Iterátorem a Výpočtem je to, že Výčet nelze použít na třídy kolekce, je použitelné pouze na staré třídy. Na druhé straně, Iterátor je použitelný pro třídy kolekce, proto se označuje jako univerzální kurzor. Naučte se další rozdíl mezi Iterátorem a Výpočtem pomocí níže uvedené srovnávací tabulky.

  1. Srovnávací tabulka
  2. Definice
  3. Klíčové rozdíly
  4. Závěr

Srovnávací tabulka

Základ pro srovnáníIterátor Výčet
ZákladníIterátor je univerzální kurzor, protože je použitelný pro všechny třídy kolekce.Výčet není univerzální kurzor, protože se vztahuje pouze na staré třídy.
PřístupPomocí Iterátoru můžete číst a odebírat prvky ze sbírky.Pomocí výčtu můžete číst pouze prvky ze sbírky.
Metodyveřejné boolean hasnext ();
veřejné objekty next ();
public void remove ();
veřejné boolean hasMoreElements ();
veřejný objekt nextElement ();
OmezeníIterátor je jednosměrný dopředný přístupový kurzor.
Iterátor nemůže nahradit žádný prvek ve sbírce.
Iterator nemůže do kolekce přidat žádný nový prvek.
Výčet je jednosměrný dopředný přístupový kurzor.
Výčet podporuje pouze starší třídy.
Výčet má přístup pouze k prvkům v kolekci.
PřekonatAbyste překonali omezení Iterátoru, musíte se rozhodnout pro ListIterator.Abyste překonali omezení Výpočtu, musíte se rozhodnout pro Iterátor.


Definice rozhraní Iterátoru

Iterátor je rozhraní v rámci kolekce. Protože Iterator je použitelný ve všech třídách kolekce, je označován jako univerzální kurzor. Je to kurzor používaný pro přístup k prvkům v kolekci jeden po druhém. Pomocí Iterátoru můžete načíst prvky ze sbírky a pokud chcete, můžete je také odstranit ze sbírky. Objekt Iterator lze vytvořit, jak je uvedeno níže.

Iterátor itr = Collc.iterator ();

Proměnná itr je objekt Iterátoru. Collc je jakýkoli objekt kolekce, který má být cyklizován nebo iterován pomocí objektu (itr) Iterátoru. iterátor () je metoda použitá k vytvoření objektu iterátoru. V Iterátoru jsou tři metody, jak je ukázáno níže.

veřejné boolean hasnext (); veřejný objekt next (); public void remove ();

První metoda hasnext () zkontroluje, zda kolekce obsahuje nějaké prvky nebo ne. Pokud kolekce obsahuje prvky, vrátí se true, jinak vrátí false. Druhá metoda další() se používá k načtení dalšího prvku v kolekci. Třetí metoda odstranit() se používá k odstranění prvků ze sbírky.


Iterátor může cestovat v kolekci pouze dopředu, nemůže se během cestování pohybovat zpět. Iterátor může odebrat prvek ze sbírky, ale nemá schopnost nahradit jakýkoli existující prvek novým prvkem, ani nemůže přidat žádný nový prvek do kolekce. K překonání těchto omezení můžete použít rozhraní ListIterator.

Definice výčtového rozhraní

Výčet je rozhraní použitelné pro dědictví třídy a nelze ji použít na žádnou třídu kolekce. Nejedná se tedy o univerzální kurzor. Výčet načítá prvek (objekt) z kolekce jeden po druhém. Objekt Enumeration má přístup k prvkům kolekce pouze pro čtení. Objekt výčtu nemůže změnit žádný prvek ze sbírky. Podívejme se, jak vytvořit výčet objektu, podívejte se.

Výčet er = Vect.elements ();

Proměnná ehm je objektem výčtu. Vect je objekt třídy vektorů, který musí projít objekt (er) výčtu. Metoda živel() se používá k vytvoření objektu Výčtu. V rozhraní Enumeration jsou pouze dvě metody, jak je ukázáno níže.

veřejné boolean hasMoreElements (); veřejné nextElement ();

První metoda hasMoreElements () se používá ke kontrole stavu kolekce, zda obsahuje prvky nebo je prázdná. Pokud kolekce obsahuje prvky, metoda hasMoreElements () vrací true, jinak vrací false. Druhá metoda nextElement () se používá k získávání prvků ze sbírky jeden po druhém. Po dokončení posuvu způsobí metoda nextElement () NoSuchElementException. Objekt Enumeration se pohybuje pouze směrem vpřed. Nelze přidat ani odebrat nebo nahradit žádný prvek v kolekci. Abyste překonali tato omezení Výčtu, musíte se rozhodnout pro Iterátor.

  1. Hlavní rozdíl mezi Iterátorem a Výpočtem je v tom, že Iterátor je univerzální kurzor, který lze použít pro iteraci libovolného objektu kolekce. Na druhé straně se výčet používá pouze pro procházení objektů starší třídy.
  2. Objekt Enumeration má přístup pouze k prvkům kolekce. Objekt Iterator však může číst a odebírat prvky ze sbírky.
  3. Existují dvě metody iterátoru, jedna pro kontrolu stavu kolekce a druhá pro načtení prvků z kolekce. Kromě metod výčtu má Iterator ještě jednu metodu k odstranění prvků ze sbírky.
  4. Omezení výčtu jsou to dopředný jednosměrný kurzor, má přístup pouze pro čtení a lze jej použít pro třídy kolekce. Na druhou stranu Iterator nemůže nahradit ani přidat žádný nový prvek do kolekce a stejně jako Enumeration je to také jeho jednosměrný kurzor dopředu.
  5. Omezení výčtu jsou řešena Iteratorem a omezení Iterátoru jsou řešena ListIteratorem.

Závěr:

V současné době se používají kurzor Iterator a ListItertaor, protože jsou univerzálním kurzorem a jsou mnohem účinnější než Enumeration.