Skillnad mellan uppräkning och iterator

Anonim

Uppräkning vs Iterator

Det finns många datastrukturer som fungerar som samlingar i Java som vektorer, Hash-tabeller och klasser som implementerar Java Samlingsramar (dvs. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap och LinkedHashSet). Det finns många sätt att iterera genom de enskilda elementen i objekten i Java. Java tillhandahåller två gränssnitt för att göra denna uppgift enklare. Uppräkning och Iterator är två av gränssnitten som finns i java. util-paket som ger funktionalitet att räkna upp genom sekvenser eller objekt med en uppsättning artiklar. Enumerator introducerades i JDK 1.0 och Iterator som introducerades i JDK 1. 2 duplicerar nästan Enumeratorens funktionalitet (inom samlingsramen).

Vad är uppräkning?

Uppräkning är ett offentligt gränssnitt i Java, introducerat i JDK 1. 0, vilket ger möjlighet att räkna upp genom sekvenser av element. Den finns under java. util-paketet. När uppräkningsgränssnittet implementeras av ett objekt kan det här objektet generera en sekvens av element. Uppräkningsgränssnittet har två metoder. Metoden harMoreElements () kommer att testa om denna uppräkning innehåller fler element och nästaElement () returnerar nästa element i sekvensen (om det finns minst en annan att gå). Med andra ord, genom att kalla NextElement () successivt, kan programmeraren få tillgång till de enskilda elementen i serien. Till exempel, för att skriva ut alla element i Vector v1 med Enumerator kan följande kodbit användas.

Uppräkning e = v1. element ();

Medan (e. HasMoreLements ()) {

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

}

Enumerator kan också användas för att definiera strömmen av inmatning till SequenceInputStream-objekten.

Vad är Iterator?

Iterator är ett offentligt gränssnitt i Java. util-paket, som möjliggör iterering genom element i samlingarna objekt som implementerar samlingsramarna (såsom ArrayList, LinkedList, etc.). Detta introducerades i JDK 1. 2 och ersatte Enumeratorn i Java Collections Framework. Iterator har tre metoder. Metoden harNext () testar om det finns resterande element i samlingen och nästa () -metoden returnerar nästa element i serien. Metoden remove () kan användas för att ta bort det aktuella elementet från den underliggande samlingen. Till exempel, för att skriva ut alla element i Vector v1 med hjälp av Iterator, kan följande kodbit användas.

Iterator i = v1. element ();

Medan (i. HarNext ()) {

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

}

Vad är skillnaden mellan uppräkning och Iterator?

Även om uppräkning och iterator är två av gränssnitten som finns i java.util-paket, som tillåter iterering / uppräkning genom element i en serie, de har sina skillnader. Iterator, som introducerades efter uppräkning, ersätter faktiskt uppräkningen inom ramen för Java Collections. Till skillnad från uppräkning är Iterator inte säker. Det innebär att samtidiga ändringar (till den underliggande samlingen) inte är tillåtna när Iterator används. Detta är mycket användbart i flera trådar miljöer där det alltid finns risk för samtidiga modifieringar. I händelse av samtidig ändring kommer Iterator-objektet att kasta en ConcurrentModificationException. Iterator har kortare metodnamn jämfört med Enumerator. Dessutom har iterator den extra funktionaliteten att radera element under iterationen (vilket inte är möjligt med Enumerator). Så, om det finns behov av att ta bort element från samlingen, är Iterator det enda alternativet som kan övervägas.