Aufzählung vs. Iterator
Es gibt viele Datenstrukturen, die als Sammlungen in Java fungieren, wie Vektoren, Hash-Tabellen und Klassen, die das Java Collections Framework implementieren (z. B. HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap und LinkedHashSet). Es gibt zahlreiche Möglichkeiten, die einzelnen Elemente der Objekte in Java zu durchlaufen. Java bietet zwei Schnittstellen, um diese Aufgabe zu vereinfachen. Enumeration und Iterator sind zwei der Schnittstellen im java.util-Paket, die Funktionen zum Aufzählen von Sequenzen oder Objekten mit einer Reihe von Elementen bereitstellen. Enumerator wurde in JDK 1 eingeführt.0 und Iterator, der in JDK 1.2 eingeführt wurde, dupliziert praktisch die Funktionalität des Enumerators (innerhalb des Collections Framework).
Was ist Aufzählung?
Enumeration ist eine öffentliche Schnittstelle in Java, die in JDK 1.0 eingeführt wurde und die Möglichkeit bietet, Sequenzen von Elementen aufzuzählen. Es befindet sich unter java.util-Paket. Wenn die Aufzählungsschnittstelle von einem Objekt implementiert wird, kann dieses Objekt eine Folge von Elementen generieren. Die Aufzählungsschnittstelle hat zwei Methoden. Die Methode hasMoreElements() testet, ob diese Enumeration mehr Elemente enthält und nextElement() gibt das nächste Element in der Sequenz zurück (wenn noch mindestens eines übrig ist). Mit anderen Worten, durch den sukzessiven Aufruf von nextElement() kann der Programmierer auf die einzelnen Elemente der Reihe zugreifen. Um beispielsweise alle Elemente in Vector v1 mit Enumerator zu drucken, kann das folgende Code-Snippet verwendet werden.
Aufzählung e=v1.elements();
While(e.hasMoreLements()){
System.out.println(e.nextElement());
}
Enumerator kann auch verwendet werden, um den Eingabestrom für die SequenceInputStream-Objekte zu definieren.
Was ist Iterator?
Iterator ist eine öffentliche Schnittstelle im Java.util-Paket, die das Iterieren durch Elemente der Collections-Objekte ermöglicht, die das Collections-Framework implementieren (wie ArrayList, LinkedList usw.). Dies wurde in JDK 1.2 eingeführt und ersetzte den Enumerator innerhalb des Java Collections Framework. Iterator hat drei Methoden. Die Methode hasNext() testet, ob noch Elemente in der Sammlung vorhanden sind, und die next()-Methode gibt das nächste Element in der Reihe zurück. Die Methode remove() kann verwendet werden, um das aktuelle Element aus der zugrunde liegenden Sammlung zu entfernen. Um beispielsweise alle Elemente in Vector v1 mit Iterator zu drucken, kann das folgende Code-Snippet verwendet werden.
Iterator i=v1.elements();
While(i.hasNext()){
System.out.println(e.next());
}
Was ist der Unterschied zwischen Enumeration und Iterator?
Obwohl Enumeration und Iterator zwei der Schnittstellen sind, die im java.util-Paket zu finden sind, die das Iterieren/Aufzählen durch Elemente einer Reihe ermöglichen, haben sie ihre Unterschiede. Tatsächlich ersetzt Iterator, der nach Enumeration eingeführt wurde, die Enumeration innerhalb des Java-Collections-Frameworks. Anders als Enumeration ist Iterator ausfallsicher. Dies bedeutet, dass gleichzeitige Änderungen (an der zugrunde liegenden Sammlung) nicht zulässig sind, wenn Iterator verwendet wird. Dies ist sehr nützlich in Umgebungen mit mehreren Threads, in denen immer das Risiko gleichzeitiger Änderungen besteht. Im Falle einer gleichzeitigen Änderung löst das Iterator-Objekt eine ConcurrentModificationException aus. Iterator hat im Vergleich zu Enumerator kürzere Methodennamen. Darüber hinaus hat iterator die zusätzliche Funktionalität, Elemente während der Iteration zu löschen (was mit Enumerator nicht möglich ist). Wenn also Elemente aus der Sammlung entfernt werden müssen, ist Iterator die einzige Option, die in Betracht gezogen werden kann.