Razlika med oštevanjem in iteratorjem

Razlika med oštevanjem in iteratorjem
Razlika med oštevanjem in iteratorjem

Video: Razlika med oštevanjem in iteratorjem

Video: Razlika med oštevanjem in iteratorjem
Video: Компьютер и Мозг | Биология Цифр 01 2024, November
Anonim

Enumeracija proti iteratorju

Obstaja veliko podatkovnih struktur, ki delujejo kot zbirke v Javi, kot so vektorji, zgoščene tabele in razredi, ki izvajajo ogrodje zbirk Java (tj. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap in LinkedHashSet). Obstaja veliko načinov za ponavljanje posameznih elementov objektov v Javi. Java nudi dva vmesnika za lažjo nalogo. Enumeration in Iterator sta dva vmesnika, ki ju najdemo v paketu java.util in nudita funkcionalnost za oštevilčenje skozi zaporedja ali objekte z naborom elementov. Enumerator je bil predstavljen v JDK 1.0 in Iterator, ki je bil uveden v JDK 1.2, praktično podvajata funkcionalnost Enumeratorja (znotraj ogrodja zbirk).

Kaj je oštevanje?

Enumeration je javni vmesnik v Javi, uveden v JDK 1.0, ki omogoča oštevilčenje skozi zaporedja elementov. Najdete ga pod paketom java.util. Ko vmesnik Enumeration implementira objekt, lahko ta objekt ustvari zaporedje elementov. Vmesnik za naštevanje ima dva načina. Metoda hasMoreElements() bo preizkusila, ali to naštevanje vsebuje več elementov, nextElement() pa vrne naslednji element v zaporedju (če obstaja vsaj še en element). Z drugimi besedami, z zaporednim klicem nextElement() lahko programer dostopa do posameznih elementov v seriji. Na primer, za tiskanje vseh elementov v Vector v1 z uporabo Enumeratorja lahko uporabite naslednji delček kode.

Naštevanje e=v1.elements();

While(e.hasMoreLements()){

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

}

Enumerator lahko uporabite tudi za definiranje toka vnosa v objekte SequenceInputStream.

Kaj je Iterator?

Iterator je javni vmesnik v paketu Java.util, ki omogoča ponavljanje elementov objektov zbirk, ki izvajajo ogrodje zbirk (kot so ArrayList, LinkedList itd.). To je bilo uvedeno v JDK 1.2 in je nadomestilo Enumerator znotraj Java Collections Framework. Iterator ima tri metode. Metoda hasNext() preizkusi, ali so v zbirki preostali elementi, metoda next() pa vrne naslednji element v seriji. Metodo remove() lahko uporabite za odstranitev trenutnega elementa iz osnovne zbirke. Na primer, za tiskanje vseh elementov v Vector v1 z uporabo Iteratorja lahko uporabite naslednji delček kode.

Iterator i=v1.elements();

While(i.hasNext()){

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

}

Kakšna je razlika med oštevanjem in iteratorjem?

Čeprav sta Enumeration in Iterator dva izmed vmesnikov, ki ju najdemo v paketu java.util in omogočata ponavljanje/naštevanje skozi elemente niza, imata svoje razlike. Pravzaprav Iterator, ki je bil uveden 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 je uporabljen Iterator. To je zelo uporabno v večnitnih okoljih, kjer vedno obstaja tveganje sočasnih sprememb. V primeru sočasne spremembe bo objekt Iterator vrgel izjemo ConcurrentModificationException. Iterator ima krajša imena metod v primerjavi z Enumeratorjem. Poleg tega ima iterator dodatno funkcijo brisanja elementov med iteracijo (kar z uporabo Enumeratorja ni mogoče). Torej, če je treba elemente odstraniti iz zbirke, je Iterator edina možnost, ki jo lahko upoštevamo.

Priporočena: