Forskjell mellom opptelling og iterator

Anonim

Oppsummering vs Iterator

Det finnes mange datastrukturer som fungerer som samlinger i Java, som vektorer, Hash-tabeller og klasser som implementerer Java Samlingsrammer (dvs. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap og LinkedHashSet). Det er mange måter å iterere gjennom de enkelte elementene i objektene i Java. Java gir to grensesnitt for å gjøre denne oppgaven enklere. Oppsummering og Iterator er to av grensesnittene som finnes i java. util-pakke som gir funksjonalitet til å oppregne gjennom sekvenser eller objekter med et sett med elementer. Enumerator ble introdusert i JDK 1. 0 og Iterator som ble introdusert i JDK 1. 2 dupliserer nesten funksjonaliteten til Enumeratoren (innenfor samlingsrammen).

Hva er oppsummering?

Oppsummering er et offentlig grensesnitt i Java, introdusert i JDK 1. 0, som gir muligheten til å oppregne gjennom sekvenser av elementer. Den finnes under java. util pakke. Når Opptellingsgrensesnittet implementeres av en objekt, kan objektet generere en sekvens av elementer. Opptaksgrensesnitt har to metoder. Metoden harMoreElements () vil teste om denne oppstillingen inneholder flere elementer, og nesteElement () returnerer neste element i sekvensen (hvis det er minst en til å gå). Med andre ord, ved å ringe nextElement () suksessivt, kan programmereren få tilgang til de enkelte elementene i serien. For eksempel, for å skrive ut alle elementene i Vector v1 ved hjelp av Enumerator, kan følgende kodebit brukes.

Oppsummering e = v1. elementer ();

Mens (e. HasMoreLements ()) {

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

}

Enumerator kan også brukes til å definere strømmen av inngang til SequenceInputStream-objektene.

Hva er Iterator?

Iterator er et offentlig grensesnitt i Java. util-pakke, som tillater iterering gjennom elementer i samlingene objekter som implementerer samlingsrammen (for eksempel ArrayList, LinkedList, etc.). Dette ble introdusert i JDK 1. 2 og erstattet Enumeratoren i Java Collection Framework. Iterator har tre metoder. Metoden harNeste () tester om det er gjenværende elementer i samlingen, og neste () -metoden returnerer neste element i serien. Metoden remove () kan brukes til å fjerne det nåværende elementet fra den underliggende samlingen. For eksempel, for å skrive ut alle elementene i Vector v1 ved hjelp av Iterator, kan følgende kodebit brukes.

Iterator i = v1. elementer ();

Mens (i. HarNeste ()) {

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

}

Hva er forskjellen mellom Oppsummering og Iterator?

Selv om, Oppsummering og Iterator er to av grensesnittene som finnes i java.util pakke, som tillater iterating / oppsummering gjennom elementer i en serie, de har sine forskjeller. Iterator, som ble introdusert etter enumerasjon, erstatter faktisk oppregningen i rammene for Java Collections. I motsetning til oppregning er Iterator ikke-sikker. Dette betyr at samtidige modifikasjoner (til den underliggende samlingen) ikke er tillatt når Iterator brukes. Dette er svært nyttig i multi-threaded miljøer der det alltid er risiko for samtidige modifikasjoner. I tilfelle en samtidig modifikasjon, vil Iterator-objektet kaste en Samtidig Modifikasjonseksempel. Iterator har kortere metodenavn i forhold til Enumerator. Videre har iteratoren den ekstra funksjonaliteten til å slette elementer under iterasjonen (som ikke er mulig ved bruk av Enumerator). Så, hvis det er behov for å fjerne elementer fra samlingen, er Iterator det eneste alternativet som kan vurderes.