Az Iterator és a felsorolási felület közötti különbség a Java-ban

Szerző: Laura McKinney
A Teremtés Dátuma: 2 Április 2021
Frissítés Dátuma: 3 Lehet 2024
Anonim
Az Iterator és a felsorolási felület közötti különbség a Java-ban - Technológia
Az Iterator és a felsorolási felület közötti különbség a Java-ban - Technológia

Tartalom


A három kurzor, amelyekkel bármilyen gyűjtemény elemei egyenként elérhetők, a következők Felsorolás, Iterator és ListIterator. Az Iterator és az Enumerator ugyanakkor ugyanazon munka elvégzésére szolgál. Mégis különböznek egymástól abban az értelemben, hogy az Enumeration csak olvasható hozzáféréssel rendelkezik a gyűjtemény elemeihez. A másik oldalon az Iterator képes olvasni és eltávolítani az elemeket a gyűjteményből. Az Iterator és a felsorolás közötti fontos különbség az, hogy Felsorolás nem alkalmazható a gyűjtési osztályokra, csak a régi osztályokra vonatkozik. Másrészt a iterátor a gyűjtési osztályokra alkalmazható, ezért univerzális kurzornak nevezik. Tanuljunk meg még néhány különbséget az Iterator és a Enumeration között az alább bemutatott összehasonlító táblázat segítségével.


  1. Összehasonlító táblázat
  2. Meghatározás
  3. Főbb különbségek
  4. Következtetés

Összehasonlító táblázat

Az összehasonlítás alapjaiterátor Felsorolás
AlapvetőAz Iterator egyetemes kurzor, mivel az összes gyűjtési osztályra alkalmazható.A felsorolás nem egyetemes kurzor, mivel csak a régi osztályokra vonatkozik.
HozzáférésAz Iterator segítségével elolvashatja és eltávolíthatja a gyűjtemény elemeit.A Enumeration használatával csak a gyűjtemény elemeit tudja elolvasni.
Módnyilvános boolean hasnext ();
nyilvános tárgyak következő ();
public void remove ();
nyilvános boolean hasMoreElements ();
nyilvános objektum nextElement ();
KorlátozásAz Iterator egyirányú előremeneti hozzáférési kurzor.
Az Iterator nem helyettesíthet egyetlen elemet sem a gyűjteményben.
Az Iterator nem adhat hozzá új elemet a gyűjteményhez.
A felsorolás egyirányú előremeneti hozzáférési kurzor.
A felsorolás csak a régi osztályokat támogatja.
A felsorolás csak olvasható hozzáféréssel rendelkezik a gyűjtemény elemeihez.
OvercomeAz Iterator korlátozásainak leküzdéséhez a ListIterator alkalmazást kell választania.A felsorolás korlátozásainak leküzdéséhez az Iterator alkalmazást kell választania.


Az Iterator interfész meghatározása

iterátor egy interfész a gyűjtési keretben. Mivel az Iterator az összes gyűjtési osztályra alkalmazható, universális kurzornak nevezik. Ez a kurzor, amellyel egyenként hozzáférhet a gyűjtemény elemeihez. Az Iterator használatával lehívhatja az elemeket a gyűjteményből, és ha szeretné, eltávolíthatja az elemeket a gyűjteményből. Az Iterator objektuma az alábbiak szerint hozható létre.

Iterátor itr = Collc.iterator ();

A változó ITR az Iterator tárgya. Collc bármilyen gyűjtőobjektum, amelyet ciklusra kell állítani vagy iterálni kell az Iterator objektumának (itr) felhasználásával. A iterator () az iterator objektum létrehozásához használt módszer. Az alább látható módon három módszer létezik az Iteratorban.

nyilvános boolean hasnext (); nyilvános objektum következő (); public void remove ();

Az első módszer hasNext () ellenőrzi, hogy a gyűjtemény tartalmaz-e elemeket vagy sem. Ha a gyűjteménynek vannak elemei, akkor visszatér igaz, hamis visszatér. A második módszer következő() a gyűjtemény következő elemének lekérésére szolgál. A harmadik módszer remove () az elemek törlésére szolgál a gyűjteményből.

Az Iterator csak egy előrehaladási irányban mozoghat a gyűjteményben, utazás közben nem tud visszatérni. Az Iterator eltávolíthatja az elemet a gyűjteményből, de nem képes meglévő elemet kicserélni egy új elemre, és nem is tud új elemet hozzáadni a gyűjteményhez. E korlátozások leküzdéséhez keresse meg a ListIterator felületet.

A felsorolási felület meghatározása

Felsorolás az a felület, amely a örökség osztályok, és ez nem alkalmazható egyetlen gyűjtőosztályra sem. Ezért nem egy univerzális kurzor. A felsorolás az elemet (objektumot) egyenként vonja le a gyűjteményből. A felsorolási objektum csak olvasható hozzáféréssel rendelkezik a gyűjtemény elemeihez. A felsorolási objektum nem módosíthat egyetlen elemet sem a gyűjteményből. Nézzük meg, hogyan lehet felsorolási objektumot létrehozni, nézzük meg.

Enumeration er = Vect.elements ();

A változó er a felsorolás tárgya. A Vect a vektorosztály objektuma, amelyet át kell lépnie a felsorolás objektumának. A módszer, a metódus elem() a felsorolás objektumának létrehozására szolgál. Az alább látható módon csak két módszer létezik a felsorolási felületen.

nyilvános boolean hasMoreElements (); nyilvános nextElement ();

Az első módszer hasMoreElements () a gyűjtemény állapotának ellenőrzésére szolgál, függetlenül attól, hogy tartalmaz-e elemeket vagy üres. Ha a gyűjtemény tartalmaz elemeket, akkor a hasMoreElements () metódus visszatér igaz, hamis visszatér. A második módszer nextElement () arra szolgál, hogy az elemeket egyenként vonják le a gyűjteményből. Amikor az áthaladás befejeződött, a következőElement () módszer dob NoSuchElementException. A felsorolási objektum csak előrefelé halad. Nem tud hozzáadni, eltávolítani vagy cserélni a gyűjtemény egyetlen elemét sem. A felsorolás ezen korlátozásainak kiküszöböléséhez az Iterator alkalmazást kell választania.

  1. Az Iterator és a Enumeration közötti fő különbség az, hogy az Iterator egy univerzális kurzor, amely bármilyen gyűjteményobjektum iterálására felhasználható. Másrészt a felsorolást csak a régi osztály tárgyainak áthaladására használják.
  2. A felsorolási objektum csak írásvédett hozzáféréssel rendelkezik a gyűjtemény elemekhez. Az Iterator objektuma azonban el tudja olvasni és eltávolíthatja az elemeket a gyűjteményből.
  3. Két iterator módszer létezik: az egyik a gyűjtemény állapotának ellenőrzésére, az egyik pedig az elemek kinyerésére a gyűjteményből. A felsorolási módszereken túl az Iteratornak még egy módszere van az elemek eltávolítására a gyűjteményből.
  4. A felsorolás korlátozásai: az egyirányú előre kurzor, csak olvasási hozzáféréssel rendelkezik, és a gyűjtemény osztályokhoz is alkalmazható. Másrészt az Iterator nem cserélhet vagy adhat hozzá új elemeket a gyűjteményhez, és mint például a Enumeration, az egyirányú előre mutató kurzora is.
  5. A felsorolás korlátozását az Iterator oldja meg, az Iterator korlátozásait a ListIterator határozza meg.

Következtetés:

Manapság az Iterator és a ListItertaor kurzort használják, mivel ezek az univerzális kurzor, és sokkal hatékonyabbak, mint a felsorolás.