Итератор в java
В этой статье мы узнаем об итераторах в Java. Мы подробно обсудим интерфейсы итератора и листератора в Java.
Когда у вас есть коллекция, вы хотите получить доступ к ее элементам, добавить/удалить или обработать элементы. Чтобы выполнить всю эту обработку с помощью программы Java, вы должны иметь возможность пройти через коллекцию, которую вы используете. Именно здесь на сцену выходит итератор.
Что такое итератор Java?
В Java итератор — это конструкция, которая используется для обхода или пошагового выполнения коллекции.
Чтобы использовать итератор, вам необходимо получить объект итератора с помощью метода “iterator()” интерфейса коллекции. Итератор Java представляет собой интерфейс платформы сбора данных и является частью пакета “java.util”. Используя итератор Java, вы можете перебирать коллекцию объектов.
Интерфейс итератора Java заменяет перечислитель, который использовался ранее для пошагового выполнения некоторых простых коллекций, таких как векторы. Основные различия между итератором Java и перечислителем заключаются в следующем:
- Значительное улучшение имен методов.
- Вы можете удалить элементы метода из коллекции, которая просматривается с помощью итератора.
В этом руководстве мы обсудим детали интерфейса итератора и интерфейса ListIterator, который является двунаправленным интерфейсом.
Типы итераторов:
- Перечислитель
- Итератор
- Листератор
Перечислитель теперь используется редко. Поэтому мы сосредоточимся на интерфейсах итератора и листератора.
Интерфейс итератора в Java
Интерфейс итератора в Java является частью фреймворка коллекций в пакете ‘java.util’ и представляет собой курсор, который можно использовать для пошагового просмотра коллекции объектов. Интерфейс итератора имеет следующие основные характеристики:
- Интерфейс итератора доступен начиная с платформы сбора данных Java 1.2.
- Он пересекает коллекцию объектов один за другим.
- В народе известен как “Универсальный курсор Java”, так как он работает со всеми коллекциями.
- Этот интерфейс поддерживает операции «чтение» и «удаление», т. Е. вы можете удалить элемент во время итерации с помощью итератора.
Общее представление интерфейса итератора приведено ниже:
Далее давайте рассмотрим методы итератора, перечисленные выше.
Методы итератора
Интерфейс итератора поддерживает следующие методы:
Next()
Прототип: E next ()
Параметры: нет параметров
Тип возврата: E ->element
Описание: Возвращает следующий элемент в коллекции.
Если в коллекции больше нет элементов, то она вызывает исключение NoSuchElementException.
hasNext()
Прототип: логический hasNext()
Параметры: Nil
Тип возвращаемого значения: true => в коллекции есть элементы. False => больше никаких элементов
Описание: Функция hasNext() проверяет, есть ли больше элементов в коллекции, доступ к которой осуществляется с помощью итератора. Если элементов больше нет, вы не вызываете метод next (). Другими словами, эту функцию можно использовать, чтобы решить, следует ли вызывать метод next ().
remove()
Прототип: voidremove()
Параметры: NIL
Тип возврата: NIL
Описание: Удаляет последний элемент, возвращенный итератором, выполняющим итерацию по базовой коллекции. Метод remove () может быть вызван только один раз при следующем вызове ().
Если итератор не поддерживает операцию удаления, он создает исключение UnsupportedOperationException.
forEachRemaining()
Прототип: void forEachRemaining(действие потребителя<? super E> )
Параметры: действие =>действие, которое необходимо выполнить
Тип возврата: void
Описание: Выполняет указанное действие над каждым из оставшихся элементов коллекции до тех пор, пока все элементы не будут исчерпаны или действие не вызовет исключение. Исключения, вызванные действием, передаются вызывающему объекту.
Если действие равно null, то оно вызывает исключение NullPointerException. Эта функция является новым дополнением к интерфейсу итератора в Java 8.
Пример итератора Java
Давайте реализуем программу Java, чтобы продемонстрировать использование интерфейса итератора. Следующая программа создает ArrayList цветов. Затем он получает итератор, используя метод iterator () ArrayList. После этого список просматривается для отображения каждого элемента.
Ограничения интерфейса:
- Операция замены элемента или добавления нового элемента не может быть выполнена с помощью этого итератора.
- Итерация продолжается только в одном направлении, то есть в прямом направлении.
- Поддерживает только последовательную итерацию.
- Когда требуется выполнить итерацию больших объемов данных, это влияет на производительность итератора.
Что такое ListIterator
Основные характеристики интерфейса ListIterator включают в себя:
- Интерфейс ListIterator расширяет интерфейс итератора.
- Интерфейс ListIterator поддерживает операции CRUD, т. е. Создание, чтение, обновление и удаление.
- Поддерживает итерацию как в прямом, так и в обратном направлении.
- Поскольку этот интерфейс является двунаправленным, курсор всегда располагается между предыдущим и следующим элементами.
- Этот интерфейс в основном работает для реализаций списков, таких как ArrayList, LinkedList и т. Д.
- Доступно с Java 1.2
Интерфейс ListIterator представлен следующим образом:
Как уже упоминалось, ListIterator расширяет интерфейс итератора. Таким образом, помимо поддержки всех методов интерфейса итератора, как показано выше, интерфейс ListIterator также имеет собственные методы, которые помогают ему выполнять операции CRUD, а также двунаправленную итерацию.
Методы листератора
Обратите внимание, что методы интерфейса итератора next (), hasNext () и remove () работают точно так же, как и интерфейс ListIterator. Поэтому мы пропустим эти методы в этом разделе. В дополнение к вышеупомянутым методам, ListIterator имеет следующие методы:
Previous ()
Прототип: E Previous( ()
Параметры: NIL
Тип возвращаемого значения: E — предыдущий элемент в списке. -1 – если итератор находится в начале списка.
Описание: Эта функция возвращает предыдущий элемент в списке. Как только возвращается предыдущий элемент, курсор перемещается назад к следующему элементу.
hasPrevious()
Прототип: booleanhasPrevious()
Параметры: NIL
Тип возвращаемого значения: true => итератор имеет больше элементов при обратном обходе списка.
Описание: Эта функция проверяет, имеет ли ListIterator больше элементов в обратном направлении.
PreviousIndex
Прототип: intpreviousIndex()
Параметры: NIL
Тип возвращаемого значения: int – индекс предыдущего элемента. -1 – если указатель находится в начале списка.
Описание: Возвращает индекс предыдущего элемента, возвращаемый предыдущим вызовом ().
nextIndex
Прототип: intnextIndex()
Параметры: NIL
Тип возвращаемого значения: int – следующий индекс. -1 – если итератор находится в конце списка.
Описание: Возвращает следующий индекс элемента в списке. Этот элемент возвращается вызовом метода next ().
set()
Прототип: набор пустот(E e)
Параметры: e – элемент, подлежащий замене
Тип возврата: NIL
Описание: Используется для замены последнего элемента заданным элементом e.
add()
Прототип: void add(E e)
Параметры: e – добавляемый элемент
Тип возврата: NIL
Описание: Добавляет новые элементы в список на позиции, предшествующей позиции следующего элемента ().
Вывод
В этой статье мы обсудили итераторы в Java, которые используются с коллекциями. Это знание поможет читателям понять коллекции, которые мы собираемся изучить в дальнейшем.