Введение в Iterator в Java

Итератор - это интерфейс, который используется для выборки элементов один за другим в коллекции. Он доступен в пакете Java под названием Java. Пакет утилит. API сбора данных реализует метод iterator (), и, следовательно, данные могут быть получены из интерфейсов, таких как Map, List, Queue, Deque и Set, которые все реализованы из инфраструктуры сбора данных. Как следует из названия, итератор в Java просматривает коллекцию объектов.

Синтаксис:

Iterator iterator()

Ниже итератора находится имя объекта, созданного путем вызова метода iterator () интерфейса коллекции. «Collection» - это имя объекта коллекции.

Iterator iter = collection.iterator();

Методы Итератора в Java

Итераторы имеют 4 метода в Java, которые используются для обхода коллекций и получения необходимой информации. Они заключаются в следующем:

  • hasNext (): Это метод, который возвращает логическое значение true, если в итерации присутствует следующий элемент, и логическое значение false, если рядом нет элемента.
  • next (): этот метод возвращает значение элемента, присутствующее в следующей итерации. Предположим, что нет элементов, которые будут возвращены в следующей итерации, после чего выдается «NoSuchElementException».
  • remove (): Этот метод удаляет текущий элемент, возвращенный итератором, из коллекции. Если этот метод вызывается методом, предшествующим next (), он выдает «IllegalStateException».
  • forEachRemaining (): Этот метод выполняет операцию со всеми оставшимися элементами в коллекции, пока все они не будут обработаны или пока не будет сгенерировано исключение. Кроме того, этот метод был недавно представлен корпорацией Oracle в их выпуске Java SE 8.

Пример итератора в Java

Ниже приведен пример Iterator в Java:

Код:

import java.io.*;
import java.util.*;
public class IteratorExample (
public static void main(String() args)
(
ArrayList val = new ArrayList();
val.add("Iteration started");
val.add("Printing iteration1");
val.add("Printing iteration2");
val.add("Printing iteration3");
val.add("End of iteration");
// Iterates through the list
Iterator iter = val.iterator();
System.out.println("The values of iteration are as follows: ");
while (iter.hasNext())
System.out.println(iter.next() + " ");
System.out.println();
)
)

Выход:

Исключения, выданные Методами Итератора

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

1. метод next ()

При выполнении итерации набора элементов и извлечения их этим методом может возникнуть следующее исключение.

  • NoSuchElementException: это происходит, если next () пытается получить элемент, который не существует в текущем списке. Следовательно, всегда необходимо использовать hasNext () перед вызовом next ().

2. метод remove ()

Здесь возможны два вида исключений:

  • IllegalStateException: если метод remove () вызывается перед методом next (), возникает это исключение. Это связано с тем, что метод пытается удалить элемент, который еще не указан методом next () и, следовательно, завершается неудачно. Чтобы устранить это исключение, необходимо вызвать next () для ссылки на первый элемент, а затем можно вызвать remove (), чтобы удалить его из списка.
  • UnsupportedOperationException: это исключение обычно выдается при попытке изменить объект списка с помощью операции добавления или удаления, которая не поддерживает изменение. Например, когда Arrays.asList пытается преобразовать массив в список, генерируется это исключение. Это связано с тем, что объект List будет иметь фиксированный размер, так как он создается оболочкой из ArrayList, и, следовательно, изменение не будет разрешено. Чтобы решить эту проблему, преобразуйте Arrays.asList в объект ArrayList или LinkedList перед выполнением любых операций, таких как добавление / удаление того же самого.

Синтаксис:

//ArrayList is created from the list having fixed size
list = new ArrayList(list);
Iterator iter = list.iterator();
while(iter.hasNext())(
if( iter.next().equals("First iteration") )(
iter.remove();
)
)

Методы ListIterator

Эти методы позволяют итератору перемещаться в обоих направлениях объекта коллекции. Ниже приведены некоторые из них:

  • add (): этот метод вставляет заданное значение объекта и возвращается при вызове метода next ().
  • hasNext (): Этот метод такой же, как и тот, который упоминается в типах итераторов, который возвращает логическое значение true / false в зависимости от того, имеет ли следующий элемент значение или нет.
  • hasPrevious (): этот метод противоположен hasNext () и возвращает логическое значение true, если в списке есть предыдущий элемент, и наоборот.
  • next (): этот метод извлекает следующий элемент из заданного списка.
  • previous (): этот метод извлекает предыдущий элемент из списка.
  • remove (): удаляет существующий элемент из списка. Когда этот метод вызывается перед функцией next () или previous (), он выдает «IllegalStateException».

Пример для ListIterator

Ниже приведен пример в ArrayList для ListIterator.

Код:

import java.util.*;
public class IteratorExample (
public static void main(String args()) (
// Creating an array list
ArrayList array = new ArrayList();
// add elements to the array list
array.add("First element");
array.add("Second element");
array.add("Third element");
array.add("Fourth element");
array.add("Fifth element");
array.add("Sixth element");
// Displaying elements of an array
System.out.println("Printing input of the array: ");
Iterator iter = array.iterator();
while(iter.hasNext()) (
Object value = iter.next();
System.out.println(value + " ");
)
System.out.println();
// To update the elements of iteration
ListIterator listiter = array.listIterator();
while(listiter.hasNext()) (
Object value = listiter.next();
listiter.set(value + "+");
)
System.out.print("Updated array elements are as follows: ");
iter = array.iterator();
while(iter.hasNext()) (
Object value = iter.next();
System.out.print(value + " ");
)
System.out.println("\n");
// To display the contents in backward direction
System.out.println("Printing elements in backward direction: ");
while(listiter.hasPrevious()) (
Object value = listiter.previous();
System.out.print(value + " ");
)
System.out.println();
)
)

Выход:

Преимущества итераторов в Java

Ниже приведены преимущества Итераторов:

  1. Он поддерживает все классы в интерфейсе Collection.
  2. Методы итератора довольно просты, легки для понимания и реализации.
  3. Элементы коллекции могут быть легко изменены (добавлены / удалены) с помощью итераторов.
  4. Доступ к элементам через итераторы не приведет к исключениям во время выполнения.
  5. Обработка данных эффективна.
  6. Он может перебирать различные переменные одновременно, сохраняя состояние каждой переменной отдельно.

Ограничения итераторов в Java

Ниже приведены ограничения итераторов:

  1. Java-итератор может выполнять итерацию только в одном направлении, т.е. в прямом направлении.
  2. Его нельзя использовать для одновременной итерации между двумя различными структурами данных.
  3. Его нельзя использовать для отслеживания элемента.
  4. Он не позволяет изменять структуру итерируемого элемента, поскольку он сохраняет его положение.
  5. Может быть неэффективным в некоторых случаях, когда обход элементов напрямую более эффективен.

Вывод

Итераторы являются наиболее часто используемым методом для извлечения элементов из интерфейса коллекции. Он называется Universal Java Cursor, поскольку он применим ко всем классам Collection.

Рекомендуемая статья

Это руководство по итератору в Java. Здесь мы обсуждаем методы и примеры Iterator в Java, а также его ограничения и преимущества. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше -

  1. Введение в сортировку кучи в Java
  2. Переопределение в Java (примеры)
  3. Итераторы в C # с преимуществами и недостатками
  4. Лучшие 10 вопросов интервью Java Collection
  5. Бросок против бросков | 5 главных отличий, которые вы должны знать