Aufzählung gegen Iterator
Es gibt viele Datenstrukturen, die in Java als Sammlungen fungieren, z. B. 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 Paket java.util, die Funktionen zum Auflisten von Sequenzen oder Objekten mit einer Reihe von Elementen bieten. Enumerator wurde in JDK 1.0 eingeführt, und Iterator, das 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, durch Folgen von Elementen aufzulisten. Es befindet sich unter dem Paket java.util. Wenn die Aufzählungsschnittstelle von einem Objekt implementiert wird, kann dieses Objekt eine Folge von Elementen erzeugen. Die Aufzählungsschnittstelle verfügt über zwei Methoden. Die Methode hasMoreElements () testet, ob diese Aufzählung mehr Elemente enthält, und das nextElement () gibt das nächste Element in der Sequenz zurück (wenn noch mindestens ein Element übrig ist). Mit anderen Worten, durch aufeinanderfolgendes Aufrufen von nextElement () kann der Programmierer auf die einzelnen Elemente in der Reihe zugreifen. Um beispielsweise alle Elemente in Vector v1 mit Enumerator zu drucken, kann das folgende Codefragment verwendet werden.
Aufzählung e = v1.elements ();
While (e.hasMoreLements ()) {
System.out.println (e.nextElement ());
}}
Enumerator kann auch verwendet werden, um den Eingabestream für die SequenceInputStream-Objekte zu definieren.
Was ist Iterator?
Iterator ist eine öffentliche Schnittstelle im Java.util-Paket, mit der Elemente der Sammlungsobjekte durchlaufen werden können, die das Sammlungsframework implementieren (z. B. 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 Auflistung vorhanden sind, und die next () -Methode gibt das nächste Element in der Reihe zurück. Mit der Methode remove () kann das aktuelle Element aus der zugrunde liegenden Auflistung entfernt werden. Um beispielsweise alle Elemente in Vector v1 mit Iterator zu drucken, kann das folgende Codefragment verwendet werden.
Iterator i = v1.elements ();
While (i.hasNext ()) {
System.out.println (e.next ());
}}
Was ist der Unterschied zwischen Aufzählung und Iterator?
Obwohl Enumeration und Iterator zwei der Schnittstellen im Paket java.util sind, die das Iterieren / Aufzählen durch Elemente einer Reihe ermöglichen, haben sie ihre Unterschiede. Tatsächlich ersetzt Iterator, der nach der Aufzählung eingeführt wurde, die Aufzählung innerhalb des Java Collections-Frameworks. Im Gegensatz zur Aufzählung 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. Bei einer gleichzeitigen Änderung löst das Iterator-Objekt eine ConcurrentModificationException aus. Iterator hat kürzere Methodennamen als Enumerator. Außerdem,Der Iterator bietet 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.