Verschil Tussen Opsomming En Iterator

Verschil Tussen Opsomming En Iterator
Verschil Tussen Opsomming En Iterator

Video: Verschil Tussen Opsomming En Iterator

Video: Verschil Tussen Opsomming En Iterator
Video: Шаблоны Java. Итератор (Iterator) 2024, December
Anonim

Opsomming versus Iterator

Er zijn veel datastructuren die fungeren als verzamelingen in Java, zoals Vectors, Hash-tabellen en klassen die Java Collections Framework implementeren (dwz HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap en LinkedHashSet). Er zijn talloze manieren om de afzonderlijke elementen van de objecten in Java te doorlopen. Java biedt twee interfaces om deze taak gemakkelijker te maken. Enumeration en Iterator zijn twee van de interfaces die in het java.util-pakket worden aangetroffen en die functionaliteit bieden voor het inventariseren via reeksen of objecten met een set 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 Collections Framework).

Wat is opsomming?

Enumeration is een openbare interface in Java, geïntroduceerd in JDK 1.0, die de mogelijkheid biedt om door reeksen elementen te inventariseren. Het is te vinden onder het pakket java.util. Wanneer de opsommingsinterface wordt geïmplementeerd door een object, kan dat object een reeks elementen genereren. Opsommingsinterface heeft twee methoden. De methode hasMoreElements () zal testen of deze opsomming meer elementen bevat en de nextElement () retourneert het volgende element in de reeks (als er nog minstens één te gaan is). Met andere woorden, door achtereenvolgens nextElement () aan te roepen, kan de programmeur toegang krijgen tot de individuele 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 ();

Terwijl (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, waarmee elementen van de collectieobjecten die het Collections-raamwerk implementeren (zoals ArrayList, LinkedList, enz.) Kunnen worden doorlopen. 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 ();

Terwijl (i.hasNext ()) {

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

}

Wat is het verschil tussen Enumeration en Iterator?

Hoewel Enumeration en Iterator twee van de interfaces zijn die worden aangetroffen in het pakket java.util, die het mogelijk maken om elementen van een reeks te herhalen / opsommen, hebben ze hun verschillen. Eigenlijk vervangt Iterator, die werd geïntroduceerd na Enumeration, de Enumeration binnen het Java Collections-framework. In tegenstelling tot Enumeration is Iterator fail-safe. 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. Verderiterator heeft de aanvullende functionaliteit om elementen te verwijderen 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.

Aanbevolen: