Forskel mellem opregning og iterator

Anonim

Enumeration vs Iterator

Der er mange datastrukturer, der fungerer som samlinger i Java, såsom vektorer, Hash-tabeller og klasser, der implementerer Java Samlingsrammer (dvs. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap og LinkedHashSet). Der er mange måder at gentage gennem de enkelte elementer af objekterne i Java. Java giver to grænseflader for at gøre denne opgave lettere. Opregning og Iterator er to af de grænseflader, der findes i java. util-pakke, der giver funktionalitet til at optælge gennem sekvenser eller objekter med et sæt elementer. Enumerator blev introduceret i JDK 1. 0 og Iterator, som blev introduceret i JDK 1. 2 næsten duplicerer funktionaliteten af ​​Enumerator (inden for Collections Framework).

Hvad er opregning?

Opgørelse er en offentlig grænseflade i Java, introduceret i JDK 1. 0, som giver mulighed for at opregne gennem sekvenser af elementer. Den findes under java. util pakke. Når opgørelsesgrænsefladen implementeres af en objekt, kan objektet generere en sekvens af elementer. Opgørelsesinterface har to metoder. Metoden harMoreElements () vil teste, hvis denne opgørelse indeholder flere elementer, og næsteElement () returnerer det næste element i sekvensen (hvis der er mindst en mere at gå). Med andre ord, ved at kalde nextElement () successivt, kan programmøren få adgang til de enkelte elementer i serien. Hvis du f.eks. Vil udskrive alle elementer i Vector v1 ved hjælp af Enumerator, kan følgende kodestykke bruges.

Tælling e = v1. elementer ();

Mens (e. HasMoreLements ()) {

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

}

Enumerator kan også bruges til at definere strømmen af ​​input til SequenceInputStream objekterne.

Hvad er Iterator?

Iterator er en offentlig grænseflade i Java. util-pakke, som tillader iterering gennem elementer i samlingerne objekter, der implementerer samlingsrammerne (såsom ArrayList, LinkedList osv.). Dette blev introduceret i JDK 1. 2 og erstattet Enumeratoren i Java Collections Framework. Iterator har tre metoder. Metoden harNeste () tester om der er resterende elementer i samlingen, og den næste () -metode returnerer det næste element i serien. Metoden remove () kan bruges til at fjerne det aktuelle element fra den underliggende samling. For eksempel at udskrive alle elementer i Vector v1 ved hjælp af Iterator, kan følgende kodestykke bruges.

Iterator i = v1. elementer ();

Mens (i. HarNæste ()) {

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

}

Hvad er forskellen mellem Opregning og Iterator?

Selvom, Opregning og Iterator er to af grænsefladerne, der findes i java.util pakke, som tillader iterating / opregning gennem elementer i en serie, de har deres forskelle. Faktisk erstattes Iterator, som blev introduceret efter Enumeration, opgørelsen i Java Collections-rammerne. I modsætning til opregning er Iterator fejlfrit. Dette betyder, at samtidige ændringer (til den underliggende samling) ikke er tilladt, når Iterator bruges. Dette er meget nyttigt i multi-threaded miljøer, hvor der altid er risiko for samtidige ændringer. I tilfælde af samtidig modifikation vil Iterator-objektet kaste en ConcurrentModificationException. Iterator har kortere metode navne i forhold til Enumerator. Derudover har iteratoren den ekstra funktionalitet ved at slette elementer under iterationen (hvilket ikke er muligt ved hjælp af Enumerator). Så hvis der er behov for at fjerne elementer fra samlingen, er Iterator den eneste mulighed, der kan overvejes.