Az Iterator és a felsorolási felület közötti különbség a Java-ban
Tartalom
- Összehasonlító táblázat
- Az Iterator interfész meghatározása
- A felsorolási felület meghatározása
- Következtetés:
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.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Következtetés
Összehasonlító táblázat
Az összehasonlítás alapja | iterá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és | Az 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ód | nyilvános boolean hasnext (); nyilvános tárgyak következő (); public void remove (); | nyilvános boolean hasMoreElements (); nyilvános objektum nextElement (); |
Korlátozás | Az 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. |
Overcome | Az 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.
- 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.
- 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.
- 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.
- 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.
- 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.