Enumeration vs Iterator
Der er mange datastrukturer, der fungerer som samlinger i Java såsom Vectors, Hash-tabeller og klasser, der implementerer Java Collections Framework (dvs. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap og LinkedHashSet). Der er adskillige måder at iterere gennem de individuelle elementer i objekterne i Java. Java leverer to grænseflader for at gøre denne opgave lettere. Enumeration og Iterator er to af de grænseflader, der findes i java.util-pakken, der giver funktionalitet til at opregne gennem sekvenser eller objekter med et sæt af elementer. Enumerator blev introduceret i JDK 1.0, og Iterator, der blev introduceret i JDK 1.2, duplikerer praktisk talt funktionaliteten af Enumerator (inden for Samleramme).
Hvad er enumeration?
Enumeration er en offentlig grænseflade i Java, introduceret i JDK 1.0, som giver mulighed for at optælles gennem sekvenser af elementer. Det findes under java.util-pakken. Når enumeration-grænsefladen implementeres af et objekt, kan dette objekt generere en række af elementer. Enumeration interface har to metoder. Metoden hasMoreElements () tester, om denne optælling indeholder flere elementer, og nextElement () returnerer det næste element i sekvensen (hvis der er mindst én mere at gå). Med andre ord ved at kalde nextElement () successivt kan programmereren få adgang til de individuelle elementer i serien. For at udskrive alle elementer i Vector v1 vha. Enumerator kan følgende kodestykker bruges.
Enumeration e = v1.elements ();
While (e.hasMoreLements ())
System.out.println (e.nextElement ());
Enumerator kan også bruges til at definere strømmen af input til SequenceInputStream-objekter.
Hvad er Iterator?
Iterator er en offentlig grænseflade i Java.util-pakken, der tillader iterering gennem elementer i samlingerne objekter, der implementerer samlingens rammer (såsom ArrayList, LinkedList osv.). Dette blev introduceret i JDK 1.2 og erstattet Enumerator inden for Java Collections Framework. Iterator har tre metoder. Metoden hasNext () 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 at udskrive alle elementer i Vector v1 vha. Iterator kan følgende kodestykker bruges.
Iterator i = v1.elements ();
While (i.hasNext ())
System.out.println (e.next ());
Hvad er forskellen mellem Enumeration og Iterator?
Selvom Enumeration og Iterator er to af de grænseflader, der findes i java.util-pakken, som tillader iterering / optælling gennem elementer i en serie, har de deres forskelle. Faktisk erstatter Iterator, der blev indført efter Enumeration, Enumeration inden for Java Collections-rammerne. I modsætning til Opregning er Iterator fejlsikker. Dette betyder, at samtidige ændringer (til den underliggende samling) ikke er tilladt, når Iterator bruges. Dette er meget nyttigt i miljøer med flere gevind, hvor der altid er risiko for samtidige ændringer. I tilfælde af en samtidig modifikation kaster Iterator-objektet en ConcurrentModificationException. Iterator har kortere metodenavne sammenlignet med Enumerator. Derudover har iteratoren den ekstra funktionalitet til 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.