Rozdiel medzi rozhraním Iterator a Enumeration v jazyku Java

Autor: Laura McKinney
Dátum Stvorenia: 2 Apríl 2021
Dátum Aktualizácie: 10 Smieť 2024
Anonim
Rozdiel medzi rozhraním Iterator a Enumeration v jazyku Java - Technológie
Rozdiel medzi rozhraním Iterator a Enumeration v jazyku Java - Technológie

Obsah


Traja kurzory, ktoré sa používajú na prístup k prvkom z ľubovoľnej kolekcie jeden po druhom, sú Vyčíslenie, Iterátor a ListIterator, Iterátor a enumerátor sú určené na vykonávanie rovnakej práce. Stále sa od seba líšia v tom zmysle, že Enumeration má prístup k prvkom v kolekcii iba na čítanie. Na druhej strane Iterator dokáže čítať a odstraňovať prvky zo zbierky. Dôležitým rozdielom medzi Iterátorom a Výpočtom je to, že výpočet nemožno použiť na triedy zbierok, je použiteľné iba pre staršie triedy. Na druhej strane iterátor je použiteľné pre triedy kolekcie, preto sa označuje ako univerzálny kurzor. Dozvieme sa viac rozdielov medzi Iterátorom a Výpočtom pomocou porovnávacej tabuľky uvedenej nižšie.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. záver

Porovnávacia tabuľka

Základ pre porovnanieiterátor výpočet
základnéIterátor je univerzálny kurzor, pretože je použiteľný pre všetky triedy zbierok.Vyčíslenie nie je univerzálny kurzor, pretože sa vzťahuje iba na staršie triedy.
prístupPomocou aplikácie Iterator môžete čítať a odstraňovať prvky zo zbierky.Pomocou Enumeration môžete čítať iba prvky v kolekcii.
metódyverejné booleovské hasnext ();
ďalšie verejné objekty ();
verejné neplatné odstránenie ();
verejné boolean hasMoreElements ();
verejný objekt nextElement ();
obmedzeniaIterátor je jednosmerný smerový kurzor smerom dopredu.
Iterátor nemôže nahradiť žiadny prvok v kolekcii.
Iterator nemôže do kolekcie pridať žiadny nový prvok.
Vyčíslenie je jednosmerný kurzor pre priamy prístup.
Vyčíslenie podporuje iba staršie triedy.
Vyčíslenie má prístup k prvkom v kolekcii iba na čítanie.
prekonaťAk chcete prekonať obmedzenia aplikácie Iterator, musíte sa rozhodnúť pre ListIterator.Aby ste prekonali obmedzenia Výpočtu, musíte sa rozhodnúť pre Iterator.


Definícia rozhrania Iterátora

iterátor je rozhranie v rámci kolekcie. Keďže Iterator je použiteľný pre všetky triedy kolekcie, označuje sa ako univerzálny kurzor. Je to kurzor, ktorý sa používa na prístup k prvkom v kolekcii jeden po druhom. Pomocou Iterátora môžete načítať prvky zo zbierky a ak chcete, môžete tiež odstrániť prvky zo zbierky. Objekt Iterátora je možné vytvoriť tak, ako je to uvedené nižšie.

Iterátor itr = Collc.iterator ();

Premenná ITR je objekt Iterátora. Collc je akýkoľvek objekt kolekcie, ktorý má byť cyklizovaný alebo iterovaný pomocou objektu (itr) Iterátora. iterátor () je metóda použitá na vytvorenie iteračného objektu. V Iterátore sú tri spôsoby, ako je uvedené nižšie.

verejné booleovské hasnext (); verejný objekt nasledujúci (); verejné neplatné odstránenie ();

Prvý spôsob hasnext () kontroluje, či zbierka obsahuje nejaké prvky alebo nie. Ak kolekcia obsahuje prvky, vráti sa true, inak sa vráti false. Druhá metóda Ďalšie() sa používa na načítanie ďalšieho prvku v kolekcii. Tretia metóda odstrániť () sa používa na odstránenie prvkov zo zbierky.


Iterátor môže cestovať v kolekcii iba smerom dopredu, počas cesty sa nemôže vrátiť späť. Iterátor môže odstrániť prvok zo zbierky, ale nemá schopnosť nahradiť akýkoľvek existujúci prvok novým prvkom, ani nemôže pridať žiadny nový prvok do kolekcie. Na prekonanie týchto obmedzení je možné použiť rozhranie ListIterator.

Definícia rozhrania pre výpočet

výpočet je rozhranie použiteľné pre dedičstvo triedy a nemožno ho použiť na žiadnu triedu zbierok. Nejde teda o univerzálny kurzor. Enumerácia načíta element (objekt) z kolekcie jeden po druhom. Objekt Enumeration má prístup k prvkom kolekcie iba na čítanie. Objekt vymenovania nemôže zmeniť žiadny prvok zo zbierky. Pozrime sa, ako vytvoriť enumeračný objekt.

En ereration er = Vect.elements ();

Premenná er je objekt výčtu. Vect je objekt triedy vektorov, ktorý musí prejsť objekt (er) Enumeration. Metóda prvok() sa používa na vytvorenie objektu Enumeration. V rozhraní Enumeration existujú iba dve metódy, ako je uvedené nižšie.

verejné boolean hasMoreElements (); verejné nextElement ();

Prvý spôsob hasMoreElements () sa používa na kontrolu stavu kolekcie, či obsahuje prvky alebo je prázdna. Ak kolekcia obsahuje prvky, metóda hasMoreElements () vráti true, inak vráti false. Druhá metóda nextElement () sa používa na získavanie prvkov zo zbierky jeden po druhom. Po dokončení posuvu sa vyhodí metóda nextElement () NoSuchElementException, Objekt Enumeration sa pohybuje iba smerom vpred. Nemôže pridať ani odstrániť ani nahradiť žiadny prvok v kolekcii. Na prekonanie týchto obmedzení Výčtu si musíte zvoliť Iterátor.

  1. Hlavný rozdiel medzi Iterátorom a Výpočtom je v tom, že Iterátor je univerzálny kurzor, ktorý sa dá použiť na opakovanie ľubovoľného objektu kolekcie. Na druhej strane, výpočet sa používa iba na prechádzanie objektov starej triedy.
  2. Objekt Enumeration má prístup iba k prvkom v kolekcii len na čítanie. Objekt Iterator však môže čítať a odstraňovať prvky zo zbierky.
  3. Existujú dve metódy iterátora, jedna na kontrolu stavu zbierky a druhá na získanie prvkov zo zbierky. Okrem metód výčtu má Iterator ešte jednu metódu na odstránenie prvkov zo zbierky.
  4. Obmedzenia výčtu sú to, že ide o jednosmerný kurzor vpred, má prístup len na čítanie a môže sa použiť na triedy kolekcie. Na druhej strane Iterator nemôže nahradiť ani pridať žiadny nový prvok do kolekcie a rovnako ako Enumeration aj jeho jednosmerný kurzor vpred.
  5. Obmedzenia počítania sú vyriešené Iterátorom a obmedzenia Iterátora sú vyriešené ListIteratorom.

záver:

V súčasnosti sa kurzory Iterator a ListItertaor používajú, pretože sú univerzálnym kurzorom a sú oveľa efektívnejšie ako výpočet.