Enumeration vs Iterator
Er zijn veel datastructuren die fungeren als verzamelingen in Java zoals Vectoren, hashtabellen en klassen die Java Collections Framework implementeren (zoals HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap en LinkedHashSet). Er zijn verschillende manieren om de afzonderlijke elementen van de objecten in Java te doorlopen. Java biedt twee interfaces om deze taak eenvoudiger te maken. Opsomming en Iterator zijn twee van de interfaces die worden gevonden in java.util-pakketten die functionaliteit bieden om op te sommen via reeksen of objecten met een reeks items. Enumerator werd geïntroduceerd in JDK 1.0 en Iterator die werd geïntroduceerd in JDK 1.2 dupliceert vrijwel de functionaliteit van de Enumerator (binnen het Collecties Framework).
Wat is inventarisatie?
Opsomming is een openbare interface in Java, geïntroduceerd in JDK 1.0, die de mogelijkheid biedt om op te sommen door middel van reeksen elementen. Het is te vinden onder het pakket java.util. Wanneer de Enumeratie-interface wordt geïmplementeerd door een object, kan dat object een reeks elementen genereren. Enumeratie-interface heeft twee methoden. De methode heeftMoreElements () zal testen of deze opsomming meer elementen bevat en de nextElement () retourneert het volgende element in de reeks (als er nog minstens één te volgen is). Met andere woorden, door opeenvolgend nextElement () aan te roepen, heeft de programmeur toegang tot de afzonderlijke elementen in de reeks. Als u bijvoorbeeld alle elementen in Vector v1 wilt afdrukken met Enumerator, kan het volgende codefragment worden gebruikt.
Opsomming e = v1.elements ();
Terwijl (e.hasMoreLements ())
System.out.println (e.nextElement ());
Enumerator kan ook worden gebruikt om de stroom invoer voor de SequenceInputStream-objecten te definiëren.
Wat is Iterator?
Iterator is een openbare interface in het pakket Java.util, waarmee iteratie mogelijk is via elementen van de verzamelingsobjecten die het kader voor collecties implementeren (zoals ArrayList, LinkedList, enzovoort). Dit werd geïntroduceerd in JDK 1.2 en werd vervangen door de Enumerator binnen het Java Collections Framework. Iterator heeft drie methoden. De methode hasNext () test of er nog resterende elementen in de verzameling zijn en de methode next () geeft het volgende element in de reeks. De methode remove () kan worden gebruikt om het huidige element uit de onderliggende verzameling te verwijderen. Als u bijvoorbeeld alle elementen in Vector v1 wilt afdrukken met Iterator, kan het volgende codefragment worden gebruikt.
Iterator i = v1.elements ();
Terwijl (i.hasNext ())
System.out.println (e.next ());
Wat is het verschil tussen Opsomming en Iterator?
Hoewel Enumeration en Iterator twee van de interfaces zijn die worden gevonden in het pakket java.util, waardoor iteraties / opsommingen door elementen van een reeks mogelijk zijn, hebben ze hun verschillen. Iterator, die werd geïntroduceerd na Opsomming, vervangt de Opsomming in het kader van Java Collections. In tegenstelling tot Enumeratie is Iterator fail-safe. Dit betekent dat gelijktijdige wijzigingen (aan de onderliggende verzameling) niet zijn toegestaan wanneer Iterator wordt gebruikt. Dit is erg handig in multi-threaded omgevingen waar er altijd een risico is op gelijktijdige wijzigingen. In het geval van een gelijktijdige wijziging, werpt het Iterator-object een ConcurrentModificationException. Iterator heeft kortere methodamen vergeleken met Enumerator. Verder heeft iterator de extra functionaliteit van het verwijderen van elementen tijdens de iteratie (wat niet mogelijk is met Enumerator). Dus als het nodig is om elementen uit de verzameling te verwijderen, is Iterator de enige optie die kan worden overwogen.