Разница между итератором и интерфейсом перечисления в Java

Автор: Laura McKinney
Дата создания: 2 Апрель 2021
Дата обновления: 9 Май 2024
Anonim
3 Итератор в Java
Видео: 3 Итератор в Java

Содержание


Три курсора, которые используются для доступа к элементам из любой коллекции один за другим, Перечисление, Итератор и ListIterator, Хотя Iterator и Enumerator предназначены для выполнения одной и той же работы. Тем не менее, они отличаются друг от друга в том смысле, что Enumeration имеет доступ только для чтения к элементам в коллекции. С другой стороны, Iterator может читать, а также удалять элементы из коллекции. Важное различие между Итератором и Перечислением состоит в том, что перечисление не может быть применено к классам коллекции, это применимо только к унаследованным классам. С другой стороны, Итератор применимо к классам коллекции, следовательно, он упоминается как универсальный курсор. Давайте узнаем еще больше различий между Iterator и Enumeration с помощью сравнительной таблицы, показанной ниже.

  1. Сравнительная таблица
  2. Определение
  3. Ключевые отличия
  4. Вывод

Сравнительная таблица

Основа для сравненияИтератор перечисление
основнойИтератор - это универсальный курсор, так как он применим ко всем классам коллекций.Перечисление не является универсальным курсором, поскольку оно применяется только к унаследованным классам.
ДоступИспользуя Iterator, вы можете читать и удалять элементы в коллекции.Используя Перечисление, вы можете только читать элементы в коллекции.
методыpublic boolean hasnext ();
публичные объекты next ();
public void remove ();
public boolean hasMoreElements ();
открытый объект nextElement ();
ограничениеИтератор - это однонаправленный курсор прямого доступа.
Итератор не может заменить любой элемент в коллекции.
Итератор не может добавлять новые элементы в коллекцию.
Перечисление является однонаправленным курсором прямого доступа.
Перечисление поддерживает только унаследованные классы.
Перечисление имеет доступ только для чтения к элементам в коллекции.
преодолетьЧтобы преодолеть ограничения Iterator, вы должны выбрать ListIterator.Чтобы преодолеть ограничения перечисления, вы должны выбрать итератор.


Определение интерфейса итератора

Итератор интерфейс в структуре коллекции Поскольку Iterator применим ко всем классам коллекций, он называется универсальным курсором. Это курсор, используемый для доступа к элементам коллекции один за другим. Используя Iterator, вы можете извлечь элементы из коллекции и, если хотите, можете также удалить элементы из коллекции. Объект Iterator может быть создан как указано ниже.

Iterator itr = Collc.iterator ();

Переменная ITR является объектом Iterator. Collc Любой объект коллекции, который должен быть циклически повторен с использованием объекта (itr) Итератора. итератора () это метод, используемый для создания объекта итератора. В Итераторе есть три метода, как показано ниже.

public boolean hasnext (); публичный объект next (); public void remove ();

Первый способ hasnext () проверяет, есть ли в коллекции какие-либо элементы или нет. Если в коллекции есть элементы, она вернет true, иначе вернет false. Второй способ следующий() используется для получения следующего элемента в коллекции. Третий метод удалять() используется для удаления элементов из коллекции.


Итератор может перемещаться в коллекции только в том направлении, куда он не может перемещаться назад во время путешествия. Итератор может удалить элемент из коллекции, но не имеет возможности заменить какой-либо существующий элемент новым элементом, а также не может добавить новый элемент в коллекцию. Чтобы преодолеть эти ограничения, вы можете перейти на интерфейс ListIterator.

Определение интерфейса перечисления

перечисление интерфейс применим к наследие классы, и это не может быть применено к любому классу коллекции. Следовательно, это не универсальный курсор. Перечисление извлекает элемент (объект) из коллекции один за другим. Объект перечисления имеет доступ только для чтения к элементам коллекции. Объект перечисления не может изменить какой-либо элемент из коллекции. Давайте посмотрим, как создать объект перечисления, посмотрим.

Перечисление er = Vect.elements ();

Переменная эр является объектом перечисления. Vect является объектом векторного класса, который должен быть пройден объектом (er) перечисления. Метод элемент() используется для создания объекта перечисления. В интерфейсе перечисления есть только два метода, как показано ниже.

public boolean hasMoreElements (); public nextElement ();

Первый способ hasMoreElements () используется для проверки состояния коллекции, содержит ли она элементы или она пуста. Если в коллекции есть элементы, метод hasMoreElements () возвращает true, иначе возвращает false. Второй способ nextElement () используется для извлечения элементов из коллекции один за другим. Когда обход завершен, метод nextElement () выдает NoSuchElementException, Объект перечисления перемещается только в прямом направлении. Он не может добавить или удалить или заменить любой элемент в коллекции. Чтобы преодолеть эти ограничения перечисления, вы должны выбрать итератор.

  1. Основное различие между Iterator и Enumeration заключается в том, что Iterator является универсальным курсором, его можно использовать для итерации любого объекта коллекции. С другой стороны, перечисление используется для обхода объекта только унаследованного класса.
  2. Объект перечисления имеет доступ только для чтения к элементам в коллекции. Однако объект Iterator может читать и удалять элементы из коллекции.
  3. Существует два метода итератора: один для проверки состояния коллекции и один для извлечения элементов из коллекции. В дополнение к методам перечисления Iterator имеет еще один метод для удаления элементов из коллекции.
  4. Ограничения перечисления - это прямой однонаправленный курсор, он имеет доступ только для чтения и может применяться к классам коллекции. С другой стороны, Iterator не может заменить или добавить какой-либо новый элемент в коллекцию и, как и Enumeration, также является однонаправленным курсором вперед.
  5. Ограничение Перечисления разрешается Итератором, а ограничение Итератора разрешается ListIterator.

Вывод:

В настоящее время используются Iterator и ListItertaor курсор, поскольку они являются универсальным курсором и намного эффективнее, чем Enumeration.