Если вы работаете с числовой программой и говорите, что хотите напечатать последовательность, то здесь входит в работу итератор в Java. Таким образом, вы можете получить последовательность, даже не добавляя оператор печати для каждой строки.
Что такое Iterator в Java?
Iterator в Java — это интерфейс, принадлежащий платформе коллекции. Позволяет просматривать коллекцию, получать доступ к элементу данных и удаляет элементы данных коллекции.
Java в основном поддерживает четыре различных курсора. Это именно:
- перечисление
- Итератор
- ListIterator
- Spliterator
Каждый из этих Java-курсоров имеет свои преимущества и недостатки.
Он также считается универсальным итератором, так как вы можете применить его к любому объекту Collection. Используя Iterator, вы можете выполнять операции чтения и удаления. Это улучшенная версия перечисления с дополнительными функциями элемента.
Методы Iterator
Итератор Java имеет в общей сложности 4 метода. Давайте разберемся с ними подробно.
| Methods | Description |
|---|---|
| forEachRemaining(Consumer<? super E>action) | Он выполняет действия над каждым элементом до тех пор, пока все элементы не будут обработаны. Также до тех пор, пока действие не создаст исключение. |
| hasNext() | Возвращает истинное значение, если во время итерации встречается большое количество элементов. |
| next() | Возвращает следующий указанный элемент во время итерации. |
| remove() | Этот метод удаляет текущий элемент. Создает исключение IllegalStateException, если предпринята попытка вызвать метод remove(), которому не предшествует вызов метода next(). |
| boolean hasNext() | Возвращает true, если итерация содержит больше элементов. |
Пример:
class Method{ public static void main(String[] args)
ArrayList<String> list = new ArrayList<String>();
list.add("E");
list.add("D");
list.add("U");
list.add("R");
list.add("E");
list.add("K");
list.add("A");
// Iterator to traverse the list
Iterator iterator = list.iterator();
System.out.println("List elements : ");
while (iterator.hasNext())
System.out.print(iterator.next() + " ");
System.out.println();
}
}
Вывод: EDUREKA
ListIterator в Java
ListIterator в Java — это итератор, который позволяет пользователям перемещаться по коллекции в обоих направлениях. Он содержит следующие методы:
| Методы | Описание |
|---|---|
| void add(Object obj) | Вставляет obj в список перед элементом, который будет возвращен следующим вызовом функции next (). |
| boolean hasNext( ) | Возвращает true, если есть следующий элемент. В противном случае возвращает false. |
| boolean hasPrevious( ) | Возвращает true, если существует предыдущий элемент. В противном случае возвращает false. |
| Object next( ) | Возвращает следующий элемент. Исключение NoSuchElementException создается, если нет следующего элемента. |
| int nextIndex( ) | Возвращает индекс следующего элемента. Если следующего элемента нет, возвращает размер списка. |
| Object previous( ) | Возвращает предыдущий элемент. Исключение NoSuchElementException создается, если предыдущий элемент отсутствует. |
| int previousIndex( ) | Возвращает индекс предыдущего элемента. Если предыдущий элемент отсутствует, то возвращается значение -1. |
| void remove( ) | Удаляет текущий элемент из списка. IllegalStateException бросается, если remove( ) вызывается перед next( ) или previous( ) вызывается. |
| void set(Object obj) | Присваивает obj текущему элементу. Это последний элемент, возвращаемый вызовом функции next() или previous(). |
Пример:
public class Lists
{
public static void main(String args[])
{
// Create an array list
ArrayList al = new ArrayList();
// add elements to the array list
al.add("E");
al.add("D");
al.add("U");
al.add("R");
al.add("E");
al.add("K");
al.add("A");
// Use iterator to display contents of al
System.out.print("Original contents of al: ");
Iterator itr = al.iterator();
while(itr.hasNext())
{
Object element = itr.next();
System.out.print(element + " ");
}
System.out.println();
// Modify objects being iterated
ListIterator litr = al.listIterator();
while(litr.hasNext())
{
Object element = litr.next();
litr.set(element + "+");
}
System.out.print("Modified contents of al: ");
itr = al.iterator();
while(itr.hasNext())
{
Object element = itr.next();
System.out.print(element + " ");
}
System.out.println();
// Now, display the list backwards
System.out.print("Modified list backwards: ");
while(litr.hasPrevious())
{
Object element = litr.previous();
System.out.print(element + " ");
}
System.out.println();
}
}
Вывод:
Original contents of al: E D U R E K A
Modified contents of al: E+ D+ U+ R+ E+ K+ A+
Modified list backwards: A+ K+ E+ R+ U+ D+ E+
Преимущества
Итератор в Java имеет следующие преимущества.
- Вы можете использовать эти итераторы для любого класса Collection.
- Поддерживает операции чтения и удаления.
- Если вы используете цикл for, вы не можете обновить (добавить / удалить) коллекцию, тогда как с помощью итератора вы можете легко обновить коллекцию.
- Универсальный для API коллекции.
- Имена методов очень просты в использовании.
Ограничения
Имеют следующие недостатки:
- Вы можете выполнять только итерацию в прямом направлении, то есть однонаправленный итератор.
- Замена и добавление нового элемента не поддерживается.
- ListIterator — самый мощный, но он применим только для классов, реализованных в List. Так что это не универсальный итератор.
- Когда вы используете операции CRUD, он не поддерживает операции создания и обновления.
- Когда вы сравниваете его со Spliterator, он не позволяет выполнять итерацию элементов параллельно. Это означает, что он поддерживает только последовательную итерацию.
- Он не поддерживает лучшую производительность для итерации большого объема данных.
