Освоение интерфейса Iterator в Java: практическое руководство с примером кода
Интерфейс Iterator в Java
Интерфейс Iterator, входящий в фреймворк коллекций Java, предоставляет унифицированный способ обхода любой коллекции. Он расширяется интерфейсом ListIterator для списков.
Каждый класс коллекции предлагает метод iterator(), возвращающий экземпляр Iterator, что обеспечивает безопасный обход и модификацию.
Методы Iterator
Интерфейс определяет четыре основных метода:
hasNext()— возвращаетtrue, если есть следующий элемент.next()— возвращает следующий элемент.remove()— удаляет последний элемент, возвращённыйnext().forEachRemaining()— применяет заданное действие ко всем оставшимся элементам.
Пример: использование Iterator с ArrayList
Ниже приведён пример реализации всех четырёх методов для ArrayList<Integer>:
import java.util.ArrayList;
import java.util.Iterator;
class Main {
public static void main(String[] args) {
// Создаём ArrayList
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(3);
numbers.add(2);
System.out.println("ArrayList: " + numbers);
// Получаем итератор
Iterator<Integer> iterator = numbers.iterator();
// Обращаемся к первому элементу
int number = iterator.next();
System.out.println("Полученный элемент: " + number);
// Удаляем этот элемент
iterator.remove();
System.out.println("Удалённый элемент: " + number);
System.out.print("Обновлённый ArrayList: ");
// Итерируемся по оставшимся элементам
while (iterator.hasNext()) {
iterator.forEachRemaining(value -> System.out.print(value + ", "));
}
}
}
Вывод
ArrayList: [1, 3, 2] Полученный элемент: 1 Удалённый элемент: 1 Обновлённый ArrayList: 3, 2,
Лямбда-выражение, переданное в forEachRemaining(), демонстрирует лаконичную обработку каждого оставшегося элемента.
java
- Методы в Java: как определять, вызывать и эффективно использовать
- Интерфейсы в Java: концепции, реализация и лучшие практики
- Типы аннотаций в Java: предопределенные, кастомные и мета-аннотации
- Освоение интерфейса NavigableSet в Java: навигация, сортировка и практические примеры
- Освоение Java Lambda-выражений: от основ к Stream API
- Понимание String.charAt() в Java: синтаксис, возвращаемый тип, исключения и пример
- Переопределение методов в Java: настройка поведения суперкласса
- Интерфейсы в Java: определение, использование и лучшие практики
- Java 9 Private Interface Methods: инкапсуляция и повторное использование кода
- Java 8 Method References: подробное руководство (:: оператор)