különbség az Iterator és a Enumeration Interface között a Java-ban

Iterator vs Enumerationa három kurzor, amelyek az elemek bármelyik gyűjteményből egyenként hozzáférhetők, az Enumeration, az Iterator és a ListIterator. Bár az Iterator és a Enumerator ugyanazt a munkát végzi. Ennek ellenére különböznek egymástól abban az értelemben, hogy a felsorolás csak olvasható hozzáféréssel rendelkezik a gyűjtemény elemeihez. A másik oldalon az Iterátor képes olvasni, valamint eltávolítani az elemeket a gyűjteményből.

az Iterátor és a felsorolás közötti fontos különbség az, hogy a felsorolás nem alkalmazható a gyűjteményosztályokra, csak a régi osztályokra alkalmazható. Másrészt az Iterátor alkalmazható a gyűjtemény osztályokra, ezért univerzális kurzornak nevezik. Tanuljunk meg még néhány különbséget az Iterátor és a felsorolás között az alábbi összehasonlító táblázat segítségével.

tartalom: Iterátor Vs számlálás

  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

összehasonlítási alap Iterátor felsorolás
Basic az Iterator egy univerzális kurzor, mivel minden gyűjteményosztályra alkalmazható. a felsorolás nem univerzális kurzor, mivel csak a régi osztályokra vonatkozik.
Access az Iterator segítségével elolvashatja és eltávolíthatja a gyűjtemény elemeit. a felsorolás használatával csak a gyűjtemény elemei olvashatók.
módszerek nyilvános logikai hasnext ();
nyilvános objektumok következő();
nyilvános void remove ();
nyilvános logikai hasMoreElements();
nyilvános objektum következőelement();
korlátozás az Iterátor egyirányú előre hozzáférési kurzor.
az Iterátor nem helyettesítheti a gyűjtemény egyetlen elemét sem.
az Iterátor nem adhat hozzá új elemet a gyűjteményhez.
a felsorolás egyirányú előre mutató 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átainak leküzdéséhez a ListIterator-t kell választania. a felsorolás korlátainak leküzdéséhez az Iterátort kell választania.

az Iterátor interfész meghatározása

az Iterátor egy interfész a gyűjtemény keretrendszerében. Mivel az Iterátor az összes gyűjteményosztályra alkalmazható, univerzális kurzornak nevezik. Ez a kurzor a gyűjtemény elemeinek egyenként történő eléréséhez. Az Iterator használatával lekérheti az elemeket a gyűjteményből, és ha szeretné, eltávolíthatja az elemeket a gyűjteményből is. Az objektum Iterátor lehet létrehozni az alábbiak szerint.

Iterator itr = Collc.iterator();

az ITR változó az Iterátor tárgya. A Collc minden olyan gyűjteményobjektum, amelyet az Iterátor objektumának (ITR) használatával kell ciklizálni vagy iterálni. Az iterator() az iterátorobjektum létrehozására használt módszer. Az Iterátorban három módszer létezik, az alábbiak szerint.

public boolean hasnext();public Object next();public void remove();

az első módszer hasnext() ellenőrzi, hogy a gyűjtemény tartalmaz-e elemeket vagy sem. Ha a gyűjtemény tartalmazza az elemeket, akkor true értéket ad vissza, máskülönben false értéket ad vissza. A második módszer következő () a gyűjtemény következő elemének lekérésére szolgál. A harmadik remove() módszer az elemek törlésére szolgál a gyűjteményből.

az Iterátor egy gyűjteményben csak előre haladhat, utazás közben nem mozoghat vissza. Az iterátor eltávolíthatja az elemet a gyűjteményből, de nem képes a meglévő elemeket Új elemre cserélni, sem Új elemet nem adhat hozzá a gyűjteményhez. Leküzdeni ezeket a korlátozásokat mehetsz ListIterator felület.

a felsorolási interfész meghatározása

a felsorolás az örökölt osztályokra vonatkozó interfész, és nem alkalmazható semmilyen gyűjteményosztályra. Ezért ez nem univerzális kurzor. A felsorolás egyenként lekéri az elemet (objektumot) a gyűjteményből. Az Enumeration objektum csak olvasható hozzáféréssel rendelkezik a gyűjtemény elemeihez. Enumeration objektum nem tudja megváltoztatni bármely eleme a gyűjtemény. Lássuk, hogyan lehet létrehozni enumeration objektum, van egy pillantást.

Enumeration er = Vect.elements();

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

public boolean hasMoreElements();public nextElement();

az első módszer hasMoreElements() a gyűjtemény állapotának ellenőrzésére szolgál, függetlenül attól, hogy benne vannak-e az elemek, vagy üres. Ha a gyűjtemény tartalmazza az elemeket, a hasMoreElements () metódus true-t ad vissza, máskülönben false-t ad vissza. A második módszer nextElement () használják letölteni az elemeket a gyűjtemény egyesével.

amikor áthaladó befejeződött a nextElement() metódus dob NoSuchElementException. A felsorolási objektum csak előre halad. Nem lehet hozzáadni, eltávolítani vagy kicserélni a gyűjtemény bármely elemét. A felsorolás ezen korlátozásainak leküzdéséhez az Iterátort kell választania.

főbb különbségek az Iterátor és a felsorolás között a Java-ban

  1. a fő különbség az Iterátor és a felsorolás között az, hogy az Iterátor univerzális kurzor, bármilyen gyűjteményobjektum iterálására használható. Másrészt a felsorolás csak a legacy osztály objektumának bejárására szolgál.
  2. Enumeration objektum csak olvasható hozzáférést biztosít a gyűjtemény elemeihez. Az Iterátor tárgya azonban képes olvasni és eltávolítani az elemeket a gyűjteményből.
  3. az iterátornak két módja van: az egyik a gyűjtemény állapotának ellenőrzésére, a másik pedig az elemek lekérésére a gyűjteményből. Amellett, hogy felsorolási módszerek Iterátor még egy módszer, hogy távolítsa el az elemeket a gyűjtemény.
  4. a felsorolás korlátai: előre egyirányú kurzor, csak olvasható hozzáféréssel rendelkezik, és alkalmazható a gyűjteményosztályokra. A másik út, Iterator nem helyettesítheti, vagy hozzá semmilyen új elemet a gyűjtemény, mint felsorolás a szintén előre egyirányú kurzor.
  5. a felsorolás korlátait az Iterátor, az Iterátor korlátait pedig a ListIterator oldja meg.

következtetés

manapság az Iterátort és a Lististertaor kurzort használják, mivel ezek az univerzális kurzorok, és sokkal hatékonyabbak, mint a felsorolás.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.