Enumeration vs Iterator
Obstaja veliko podatkovnih struktur, ki delujejo kot zbirke v Javi, na primer Vektorji, tabele Hash in razredi, ki implementirajo ogrodje zbirk Java (tj. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap in LinkedHashSet). Obstajajo številni načini ponovitve posameznih elementov predmetov v Javi. Java ima dva vmesnika za lažjo nalogo. Enumeration in Iterator sta dva vmesnika, najdena v paketu java.util, ki zagotavljata funkcionalnost za naštevanje skozi zaporedja ali predmete z naborom elementov. Enumerator je bil predstavljen v JDK 1.0 in Iterator, ki je bil uveden v JDK 1.2, skoraj podvaja funkcionalnost Enumeratorja (znotraj okvira zbirk).
Kaj je štetje?
Preštevanje je javni vmesnik v Javi, uveden v JDK 1.0, ki omogoča možnost oštevilčenja skozi zaporedja elementov. Nahaja se v paketu java.util. Ko objekt vnese vmesnik Enumeration, lahko ta objekt generira zaporedje elementov. Številčni vmesnik ima dva načina. Metoda hasMoreElements () bo preskusila, ali vsebuje to štetje več elementov in nextElement () vrne naslednji element v zaporedju (če je na voljo vsaj še en). Z drugimi besedami, programer lahko z zaporednim klicem nextElement () dostopa do posameznih elementov v seriji. Na primer za tiskanje vseh elementov v Vector v1 s pomočjo Enumeratorja lahko uporabimo naslednji delček kode.
Število e = v1.elements ();
Medtem ko (e.hasMoreLements ()) {
System.out.println (e.nextElement ());
}
Števec lahko uporabite tudi za določanje toka vnosa v objekte SequenceInputStream.
Kaj je Iterator?
Iterator je javni vmesnik v paketu Java.util, ki omogoča iteracijo skozi elemente zbirk, ki izvajajo ogrodje zbirk (kot so ArrayList, LinkedList itd.). Ta je bil uveden v JDK 1.2 in je nadomestil Enumerator v okviru Java Collections Framework. Iterator ima tri metode. Metoda hasNext () preizkusi, ali so v zbirki preostali elementi, metoda next () pa vrne naslednji element v nizu. Metodo remove () lahko uporabimo za odstranitev trenutnega elementa iz osnovne zbirke. Na primer za tiskanje vseh elementov v Vector v1 z uporabo Iteratorja lahko uporabimo naslednji delček kode.
Iterator i = v1.elements ();
Medtem ko (i.hasNext ()) {
System.out.println (e.next ());
}
Kakšna je razlika med Enumeration in Iterator?
Enumeration in Iterator sta sicer dva vmesnika, ki ju najdemo v paketu java.util in omogočata iteracijo / štetje skozi elemente serije, vendar imata svoje razlike. Pravzaprav Iterator, ki je bil predstavljen po Enumeration, nadomešča Enumeration znotraj okvira Java Collections. Za razliko od Enumeration je Iterator varen pred napakami. To pomeni, da sočasne spremembe (osnovne zbirke) niso dovoljene, ko se uporablja Iterator. To je zelo koristno v okoljih z več navoji, kjer vedno obstaja nevarnost sočasnih sprememb. V primeru sočasne spremembe bo objekt Iterator vrgel ConcurrentModificationException. Iterator ima krajša imena metod v primerjavi s števcem. Poleg tegaiterator ima dodatno funkcionalnost brisanja elementov med iteracijo (kar z Enumeratorjem ni mogoče). Torej, če je treba elemente odstraniti iz zbirke, je edina možnost, ki jo je mogoče upoštevati, Iterator.