Разница между перечислением и итератором

Разница между перечислением и итератором
Разница между перечислением и итератором

Видео: Разница между перечислением и итератором

Видео: Разница между перечислением и итератором
Видео: Чем Генераторы отличаются от Итераторов в Python? 2024, Май
Anonim

Перечисление против итератора

Существует множество структур данных, которые действуют как коллекции в Java, такие как векторы, хеш-таблицы и классы, реализующие Java Collections Framework (например, HashMap, HashSet, ArrayList, TreeSet, TreeMap, LinkedList, LinkedHashMap и LinkedHashSet). Существует множество способов перебора отдельных элементов объектов в Java. Java предоставляет два интерфейса, облегчающих эту задачу. Перечисление и Итератор - это два интерфейса из пакета java.util, которые предоставляют функциональные возможности для перечисления последовательностей или объектов с набором элементов. Перечислитель был представлен в JDK 1.0, а Iterator, представленный в JDK 1.2, практически дублирует функциональность перечислителя (в рамках 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, который позволяет выполнять итерацию по элементам объектов коллекций, реализующих структуру коллекций (например, ArrayList, LinkedList и т. Д.). Это было введено в JDK 1.2 и заменило Enumerator в Java Collections Framework. Итератор имеет три метода. Метод hasNext () проверяет, есть ли оставшиеся элементы в коллекции, а метод next () возвращает следующий элемент в серии. Метод remove () можно использовать для удаления текущего элемента из базовой коллекции. Например, чтобы распечатать все элементы в Vector v1 с помощью Iterator, можно использовать следующий фрагмент кода.

Итератор i = v1.elements ();

Хотя (i.hasNext ()) {

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

}

В чем разница между Enumeration и Iterator?

Хотя Enumeration и Iterator - это два интерфейса из пакета java.util, которые позволяют выполнять итерацию / перечисление элементов серии, у них есть свои различия. Фактически, Iterator, который был представлен после Enumeration, заменяет Enumeration в структуре Java Collections. В отличие от Enumeration, Iterator отказоустойчив. Это означает, что одновременные изменения (базовой коллекции) не допускаются при использовании Iterator. Это очень полезно в многопоточных средах, где всегда есть риск одновременных модификаций. В случае одновременной модификации объект Iterator вызовет исключение ConcurrentModificationException. Итератор имеет более короткие имена методов по сравнению с Enumerator. Более того,Итератор имеет дополнительную функцию удаления элементов во время итерации (что невозможно с помощью Enumerator). Итак, если есть необходимость удалить элементы из коллекции, Iterator - единственный вариант, который можно рассмотреть.

Рекомендуем: