Skillnaden mellan uppräkning och iterator

Skillnaden mellan uppräkning och iterator
Skillnaden mellan uppräkning och iterator

Video: Skillnaden mellan uppräkning och iterator

Video: Skillnaden mellan uppräkning och iterator
Video: Beskrivning av metafor och liknelse 2024, November
Anonim

Enumeration vs Iterator

Det finns många datastrukturer som fungerar som samlingar i Java, såsom vektorer, Hash-tabeller och klasser som implementerar Java Collections Framework (dvs. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap och LinkedHashSet). Det finns många sätt att iterera genom de individuella elementen i objekten i Java. Java tillhandahåller två gränssnitt för att göra denna uppgift enklare. Enumeration och Iterator är två av gränssnitten som finns i paketet java.util som tillhandahåller funktionalitet för att räkna upp genom sekvenser eller objekt med en uppsättning objekt. Enumerator introducerades i JDK 1.0 och Iterator som introducerades i JDK 1.2 duplicerar praktiskt taget funktionaliteten hos Enumerator (inom samlingsramverket).

Vad är uppräkning?

Enumeration är ett offentligt gränssnitt i Java, introducerat i JDK 1.0, som ger möjlighet att räkna upp genom sekvenser av element. Det finns under paketet java.util. När uppräkningsgränssnittet implementeras av ett objekt, kan det objektet generera en sekvens av element. Uppräkningsgränssnittet har två metoder. Metoden hasMoreElements() kommer att testa om denna uppräkning innehåller fler element och nextElement() returnerar nästa element i sekvensen (om det finns minst ett till kvar). Med andra ord, genom att anropa nextElement() successivt kan programmeraren komma åt de individuella elementen i serien. Till exempel, för att skriva ut alla element i Vector v1 med Enumerator, kan följande kodavsnitt användas.

Enumeration e=v1.elements();

While(e.hasMoreLements()){

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

}

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

Vad är Iterator?

Iterator är ett publikt gränssnitt i Java.util-paketet, som tillåter iteration genom element i samlingsobjekten som implementerar samlingsramverket (som ArrayList, LinkedList, etc.). Detta introducerades i JDK 1.2 och ersatte Enumerator inom Java Collections Framework. Iterator har tre metoder. Metoden hasNext() testar om det finns kvarstående element i samlingen och metoden next() 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 Iterator, kan följande kodavsnitt användas.

Iterator i=v1.elements();

While(i.hasNext()){

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

}

Vad är skillnaden mellan Enumeration och Iterator?

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

Rekommenderad: