Különbség a számolás és az Iterator között

Anonim

Enumeration vs Iterator

Számos adatszerkezet létezik, amelyek Java-gyűjtemények, például Vektorok, Hash táblák és osztályok Gyűjtemény keretrendszer (pl. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap és LinkedHashSet). Számos módszer létezhet a Java egyes objektumainak elemzésén keresztül. A Java két interfészt biztosít a feladat megkönnyítésére. A számlálás és az Iterator két a java-ban található interfészek közül. util csomagot, amely funkciókat tartalmaz a sorozatok vagy tárgyak sorozatos felsorolására. Számlálót vezettek be a JDK 1. 0-ban és az Iterator-ban, amelyet a JDK 1-ben vezettek be. 2 gyakorlatilag megismétli az Enumerator funkcionalitását (a gyűjtemény keretén belül).

Mi a számlálás?

A számlálás nyilvános interfész a Java-ban, amelyet a JDK 1. 0-ban vezetett be, amely lehetővé teszi az elemek sorozatait. Ez a java alatt található. util csomagot. Ha a számlázási felületet egy objektum hajtja végre, akkor az objektum létrehozhat elemek sorrendjét. A számlálófelület kétféleképpen működik. A methodMoreElements () megvizsgálja, hogy ez a felsorolás több elemet tartalmaz-e, és a következőElement () a következő elemet adja vissza a sorozatban (ha van még legalább egy újabb). Más szóval, a NextElement () egymás utáni hívásával a programozó hozzáférhet a sorozat egyes elemeihez. Például, ha minden elemet nyomtat a Vector v1-ben Enumerator segítségével, a következő kódrészlet használható.

Számlálás e = v1. elemek ();

Míg (például hasMoreLements ()) {

Rendszer. ki. println (e. nextElement ());

}

Enumerátor is használható a SequenceInputStream objektumok adatfolyamának meghatározására.

Mi az Iterator?

Az Iterator nyilvános felület Java-ban. util csomagot, amely lehetővé teszi a Gyűjtemények keretrendszerét végrehajtó gyűjtemények elemeinek (pl. ArrayList, LinkedList stb.) elemeinek iterezését. Ezt a JDK 1. 2-ben vezették be, és felváltotta a Enumerator-ot a Java Collections Framework keretén belül. Az Iterator három módszerrel rendelkezik. A methodNext () teszteli, hogy vannak-e elemek a gyűjtésben és a következő () metódus a sor következő elemét adja vissza. Az eltávolítás () módszer használható az aktuális elem eltávolításához az alapul szolgáló gyűjteményből. Például, ha minden elemet nyomtat a Vector v1-ben az Iterator segítségével, a következő kódrészlet használható.

iterátor i = v1. elemek ();

Míg (i. HasNext ()) {

Rendszer. ki. println (következő ());

}

Mi a különbség a számlálás és az Iterator között?

Bár az Enumeration és az Iterator a java-ban található két interfész.util csomagot, amely lehetővé teszi a sorozaton belüli iterációt / felsorolást, különbségeik vannak. Valójában az Iterator, amelyet a felsorolás után vezettek be, lecseréli a számlálást a Java Collections keretrendszeren belül. A számlálással ellentétben az Iterator hibamentes. Ez azt jelenti, hogy az Iterator használatakor nem engedélyezett az egyidejű módosítások (az alapul szolgáló gyűjteményhez). Ez nagyon hasznos a többszálú környezetben, ahol mindig fennáll a párhuzamos módosítások veszélye. Egyidejű módosítás esetén az Iterator objektum egy ConcurrentModificationException-ot dob. Az Iterator rövidebb metódusnevekkel rendelkezik a Számlálóhoz képest. Ezenkívül az iterátor rendelkezik az elemek törlésével (az Enumerator segítségével nem lehetséges). Tehát, ha szükség van az elemek eltávolítására a gyűjteményből, akkor az Iterator az egyetlen lehetőség, amely figyelembe vehető.