Verskil tussen Enumeration en Iterator

Verskil tussen Enumeration en Iterator
Verskil tussen Enumeration en Iterator

Video: Verskil tussen Enumeration en Iterator

Video: Verskil tussen Enumeration en Iterator
Video: Beeldspraak 2024, Julie
Anonim

Enumeration vs Iterator

Daar is baie datastrukture wat as versamelings in Java optree, soos Vectors, Hash-tabelle en -klasse wat Java Collections Framework implementeer (d.w.s. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap en LinkedHashSet). Daar is talle maniere om deur die individuele elemente van die voorwerpe in Java te herhaal. Java bied twee koppelvlakke om hierdie taak makliker te maak. Enumeration en Iterator is twee van die koppelvlakke wat in java.util-pakket gevind word wat funksionaliteit bied om deur rye of voorwerpe met 'n stel items op te tel. Enumerator is in JDK 1 bekendgestel.0 en Iterator wat in JDK 1.2 bekendgestel is, dupliseer feitlik die funksionaliteit van die Enumerator (binne die versamelingsraamwerk).

Wat is Enumeration?

Enumeration is 'n publieke koppelvlak in Java, bekendgestel in JDK 1.0, wat die vermoë bied om deur reekse van elemente op te tel. Dit word gevind onder java.util-pakket. Wanneer die Enumeration-koppelvlak deur 'n voorwerp geïmplementeer word, kan daardie voorwerp 'n reeks elemente genereer. Opsomming koppelvlak het twee metodes. Die metode hasMoreElements() sal toets of hierdie opsomming meer elemente bevat en die nextElement() gee die volgende element in die ry terug (as daar ten minste nog een is om te gaan). Met ander woorde, deur volgendeElement() opeenvolgend te roep, kan die programmeerder toegang tot die individuele elemente in die reeks kry. Om byvoorbeeld alle elemente in Vector v1 met Enumerator te druk, kan die volgende kodebrokkie gebruik word.

Enumeration e=v1.elements();

While(e.hasMoreLements()){

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

}

Enumerator kan ook gebruik word om die stroom van invoer na die SequenceInputStream-objekte te definieer.

Wat is Iterator?

Iterator is 'n publieke koppelvlak in Java.util-pakket, wat dit moontlik maak om deur elemente van die versamelingsobjekte te herhaal wat die versamelingsraamwerk implementeer (soos ArrayList, LinkedList, ens.). Dit is in JDK 1.2 bekendgestel en het die Enumerator binne die Java Collections Framework vervang. Iterator het drie metodes. Die metode hasNext() toets of daar oorblywende elemente in die versameling is en die volgende() metode gee die volgende element in die reeks terug. Die remove() metode kan gebruik word om die huidige element uit die onderliggende versameling te verwyder. Byvoorbeeld, om alle elemente in Vector v1 met Iterator te druk, kan die volgende kodebrokkie gebruik word.

Iterator i=v1.elements();

While(i.hasNext()){

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

}

Wat is die verskil tussen Enumeration en Iterator?

Alhoewel Enumeration en Iterator twee van die koppelvlakke is wat in java.util-pakket gevind word, wat dit moontlik maak om deur elemente van 'n reeks te herhaal/opsom, het hulle hul verskille. Eintlik vervang Iterator, wat na Enumeration ingestel is, die Enumeration binne die Java Collections-raamwerk. Anders as Enumeration, is Iterator faalveilig. Dit beteken dat gelyktydige wysigings (aan die onderliggende versameling) nie toegelaat word wanneer Iterator gebruik word nie. Dit is baie nuttig in multi-draad omgewings waar daar altyd 'n risiko van gelyktydige wysigings is. In die geval van 'n gelyktydige wysiging, sal die Iterator-voorwerp 'n ConcurrentModificationException gooi. Iterator het korter metodename in vergelyking met Enumerator. Verder het iterator die bykomende funksionaliteit om elemente tydens die iterasie uit te vee (wat nie moontlik is met Enumerator nie). Dus, as dit nodig is om elemente uit die versameling te verwyder, is Iterator die enigste opsie wat oorweeg kan word.

Aanbeveel: