Opsomming vs Iterator
Er zijn veel gegevensstructuren die fungeren als verzamelingen in Java, zoals vectoren, hash-tabellen en klassen die Java Collections Framework implementeren (d.w.z. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap en LinkedHashSet). Er zijn talloze manieren om door de afzonderlijke elementen van de objecten in Java te bladeren. Java biedt twee interfaces om deze taak gemakkelijker te maken. Enumeratie en Iterator zijn twee van de interfaces in het java.util-pakket die functionaliteit bieden om door reeksen of objecten met een set items te inventariseren. Enumerator is geïntroduceerd in JDK 1.0 en Iterator die in JDK 1.2 werden geïntroduceerd, dupliceren vrijwel de functionaliteit van de Enumerator (binnen het Collections Framework).
Wat is opsomming?
Enumeration is een openbare interface in Java, geïntroduceerd in JDK 1.0, die de mogelijkheid biedt om op te sommen door reeksen van elementen. Het is te vinden onder het pakket java.util. Wanneer de Enumeration-interface wordt geïmplementeerd door een object, kan dat object een reeks elementen genereren. De enumeratie-interface heeft twee methoden. De methode hasMoreElements() zal testen of deze opsomming meer elementen bevat en nextElement() retourneert het volgende element in de reeks (als er nog minstens één te gaan is). Met andere woorden, door nextElement() achtereenvolgens aan te roepen, heeft de programmeur toegang tot de afzonderlijke elementen in de reeks. Om bijvoorbeeld alle elementen in Vector v1 af te drukken met Enumerator, kan het volgende codefragment worden gebruikt.
Opsomming e=v1.elements();
While(e.hasMoreLements()){
System.out.println(e.nextElement());
}
Enumerator kan ook worden gebruikt om de invoerstroom naar de SequenceInputStream-objecten te definiëren.
Wat is Iterator?
Iterator is een openbare interface in het Java.util-pakket, die het mogelijk maakt om elementen van de collectieobjecten te doorlopen die het Collecties-framework implementeren (zoals ArrayList, LinkedList, enz.). Dit werd geïntroduceerd in JDK 1.2 en verving de Enumerator binnen het Java Collections Framework. Iterator heeft drie methoden. De methode hasNext() test of er nog elementen in de verzameling zijn en de methode next() retourneert het volgende element in de reeks. De methode remove() kan worden gebruikt om het huidige element uit de onderliggende verzameling te verwijderen. Om bijvoorbeeld alle elementen in Vector v1 af te drukken met Iterator, kan het volgende codefragment worden gebruikt.
Iterator i=v1.elements();
While(i.hasNext()){
Systeem.uit.println(e.next());
}
Wat is het verschil tussen enumeratie en iterator?
Hoewel Enumeratie en Iterator twee van de interfaces zijn die worden gevonden in het java.util-pakket, die het mogelijk maken om elementen van een reeks te herhalen/opsommen, hebben ze hun verschillen. Eigenlijk vervangt Iterator, dat na Enumeration werd geïntroduceerd, de Enumeration binnen het Java Collections-framework. In tegenstelling tot Enumeration is Iterator faalveilig. Dit betekent dat gelijktijdige wijzigingen (aan de onderliggende collectie) niet zijn toegestaan wanneer Iterator wordt gebruikt. Dit is erg handig in omgevingen met meerdere threads waar er altijd een risico is op gelijktijdige wijzigingen. In het geval van een gelijktijdige wijziging, genereert het Iterator-object een ConcurrentModificationException. Iterator heeft kortere methodenamen in vergelijking 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 collectie te verwijderen, is Iterator de enige optie die kan worden overwogen.