Különbség a felsorolás és az iterátor között

Különbség a felsorolás és az iterátor között
Különbség a felsorolás és az iterátor között

Videó: Különbség a felsorolás és az iterátor között

Videó: Különbség a felsorolás és az iterátor között
Videó: Mi a metafora? Avagy mire (nem) képes a képes beszéd? 2024, Július
Anonim

Enumeration vs Iterator

Sok adatstruktúra működik gyűjteményként a Java nyelvben, például vektorok, hash-táblák és osztályok, amelyek megvalósítják a Java Collections Framework-et (azaz HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap és LinkedHashSet). A Java objektumok egyes elemei között számos módszer létezik. A Java két interfészt biztosít a feladat megkönnyítésére. Az Enumeration és az Iterator a java.util csomagban található két interfész, amelyek funkcionalitást biztosítanak a sorozatok vagy objektumok elemkészlettel történő felsorolásához. Az Enumerator a JDK 1-ben jelent meg. A 0 és az Iterator, amelyet a JDK 1.2-ben vezettek be, gyakorlatilag megkettőzi az Enumerator funkcióit (a gyűjteményi keretrendszeren belül).

Mi az a felsorolás?

Az Enumeration a JDK 1.0-ban bevezetett nyilvános interfész a Java nyelven, amely lehetővé teszi az elemek sorozatain keresztül történő felsorolást. A java.util csomag alatt található. Ha a Felsorolási felületet egy objektum valósítja meg, az objektum elemsorozatot generálhat. A felsorolási felületnek két módja van. A hasMoreElements() metódus megvizsgálja, hogy ez a felsorolás több elemet tartalmaz-e, és a nextElement() a sorozat következő elemét adja vissza (ha van még legalább egy). Más szóval, a nextElement() egymás utáni meghívásával a programozó hozzáférhet a sorozat egyes elemeihez. Például a Vector v1 összes elemének kinyomtatásához az Enumerator segítségével a következő kódrészlet használható.

Enumeration e=v1.elements();

While(e.hasMoreLements()){

System.out.println(e.nextElement());

}

Az Enumerator a SequenceInputStream objektumok bemeneti adatfolyamának meghatározására is használható.

Mi az Iterator?

Az Iterator egy nyilvános felület a Java.util csomagban, amely lehetővé teszi a Collections keretrendszert megvalósító gyűjteményobjektumok elemeinek iterációját (például ArrayList, LinkedList stb.). Ezt a JDK 1.2-ben vezették be, és felváltották az Enumeratort a Java Collections Frameworkben. Az Iterátornak három módszere van. A hasNext() metódus azt teszteli, hogy vannak-e még elemek a gyűjteményben, és a next() metódus a sorozat következő elemét adja vissza. A remove() metódus használható az aktuális elem eltávolítására a mögöttes gyűjteményből. Például a Vector v1 összes elemének kinyomtatásához az Iterator segítségével a következő kódrészlet használható.

Iterátor i=v1.elements();

While(i.hasNext()){

System.out.println(e.next());

}

Mi a különbség az Enumeration és az Iterator között?

Noha az Enumeration és az Iterator a java.util csomagban található két interfész, amelyek lehetővé teszik a sorozat elemei közötti iterációt/felsorolást, vannak különbségeik. Valójában az Iterator, amelyet az Enumeration után vezettek be, felváltja a felsorolást a Java Collections keretrendszerben. Az Enumerationtól eltérően az Iterator hibabiztos. Ez azt jelenti, hogy az Iterator használatakor nem engedélyezettek az egyidejű módosítások (a mögöttes gyűjteményben). Ez nagyon hasznos többszálú környezetekben, ahol mindig fennáll az egyidejű módosítások kockázata. Egyidejű módosítás esetén az Iterator objektum ConcurrentModificationException-t dob. Az Iterator metódusnevei rövidebbek, mint az Enumerator. Ezenkívül az iterátor rendelkezik azzal a kiegészítő funkcióval, hogy az iteráció során törölje az elemeket (ami az Enumerator használatával nem lehetséges). Tehát, ha elemeket kell eltávolítani a gyűjteményből, az Iterator az egyetlen lehetőség, amelyet figyelembe lehet venni.

Ajánlott: