Перечисление против итератора
Есть много структур данных, которые действуют как коллекции в Java, такие как Векторы, Хеш-таблицы и классы, которые реализуют Java Collections Framework (то есть HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap и LinkedHashSet). Существует множество способов перебора отдельных элементов объектов в Java. Java предоставляет два интерфейса, чтобы облегчить эту задачу. Перечисление и Итератор - это два интерфейса, найденные в пакете java.util, которые предоставляют функции для перечисления через последовательности или объекты с набором элементов. Enumerator был представлен в JDK 1.0, а Iterator, который был представлен в JDK 1.2, практически дублирует функциональность Enumerator (в рамках Collections Framework).
Что такое перечисление?
Перечисление - это открытый интерфейс в Java, представленный в JDK 1.0, который предоставляет возможность перечисления через последовательности элементов. Он находится в пакете java.util. Когда интерфейс Enumeration реализуется объектом, этот объект может генерировать последовательность элементов. Интерфейс перечисления имеет два метода. Метод hasMoreElements () проверит, содержит ли это перечисление больше элементов, а nextElement () возвращает следующий элемент в последовательности (если есть хотя бы еще один). Другими словами, вызывая nextElement () последовательно, программист может получить доступ к отдельным элементам в серии. Например, чтобы распечатать все элементы в Vector v1 с помощью Enumerator, можно использовать следующий фрагмент кода.
Перечисление e = v1.elements ();
В то время как (e.hasMoreLements ())
System.out.println (e.nextElement ());
Перечислитель также можно использовать для определения потока ввода в объекты SequenceInputStream..
Что такое Итератор?
Iterator - это открытый интерфейс в пакете Java.util, который позволяет выполнять итерацию по элементам объектов коллекций, которые реализуют платформу Collections (например, ArrayList, LinkedList и т. Д.). Это было введено в JDK 1.2 и заменило Enumerator в платформе Java Collections Framework. Итератор имеет три метода. Метод hasNext () проверяет, есть ли в коллекции оставшиеся элементы, а метод next () возвращает следующий элемент в серии. Метод remove () можно использовать для удаления текущего элемента из базовой коллекции. Например, чтобы распечатать все элементы в Vector v1 с помощью Iterator, можно использовать следующий фрагмент кода.
Iterator i = v1.elements ();
В то время как (i.hasNext ())
System.out.println (e.next ());
В чем разница между перечислением и итератором?
Хотя Enumeration и Iterator являются двумя интерфейсами, которые есть в пакете java.util, которые позволяют выполнять итерацию / перечисление элементов серии, они имеют свои отличия. Фактически, Iterator, который был введен после Enumeration, заменяет Enumeration в структуре Java Collections. В отличие от перечисления, Iterator является отказоустойчивым. Это означает, что одновременные изменения (в базовой коллекции) не допускаются при использовании Iterator. Это очень полезно в многопоточных средах, где всегда существует риск одновременных изменений. В случае одновременной модификации объект Iterator генерирует исключение ConcurrentModificationException. Итератор имеет более короткие имена методов по сравнению с Enumerator. Кроме того, итератор имеет дополнительную функциональность удаления элементов во время итерации (что невозможно при использовании Enumerator). Таким образом, если необходимо удалить элементы из коллекции, итератор является единственным вариантом, который можно рассмотреть.