РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
336 of 1163 menu

Класс ListIterator

Класс ListIterator - это интерфейс из пакета java.util, который расширяет обычный Iterator и предназначен специально для списков (List). В отличие от обычного итератора, ListIterator умеет двигаться в двух направлениях: вперед и назад. Кроме того, он позволяет получать индексы текущих элементов, а также добавлять, заменять и удалять элементы прямо во время обхода списка. Получить объект ListIterator можно с помощью метода listIterator, который вызывается у самого списка. Без параметров итератор устанавливается в начало списка, а если передать индекс - в позицию с этим индексом.

Синтаксис

ListIterator<E> iterator = list.listIterator(); ListIterator<E> iterator = list.listIterator(index);

Основные методы

Класс ListIterator предоставляет следующие ключевые методы: hasNext - проверяет, есть ли следующий элемент; next - возвращает следующий элемент и сдвигает курсор вперед; hasPrevious - проверяет, есть ли предыдущий элемент; previous - возвращает предыдущий элемент и сдвигает курсор назад; nextIndex - возвращает индекс следующего элемента; previousIndex - возвращает индекс предыдущего элемента; remove - удаляет последний возвращенный элемент; set - заменяет последний возвращенный элемент; add - вставляет элемент перед текущей позицией курсора.

Пример

Давайте создадим список и пройдемся по нему итератором вперед, выводя каждый элемент:

import java.util.List; import java.util.ListIterator; public class Main { public static void main(String[] args) { List<String> list = List.of("a", "b", "c", "d", "e"); ListIterator<String> iter = list.listIterator(); while (iter.hasNext()) { System.out.println(iter.next()); } } }

Результат выполнения кода:

"a" "b" "c" "d" "e"

Пример

Давайте пройдемся по тому же списку в обратном направлении, используя методы hasPrevious и previous:

import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(List.of("a", "b", "c", "d", "e")); ListIterator<String> iter = list.listIterator(list.size()); while (iter.hasPrevious()) { System.out.println(iter.previous()); } } }

Результат выполнения кода:

"e" "d" "c" "b" "a"

Пример

Давайте заменим каждый элемент списка на его индекс, используя метод set:

import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(List.of("a", "b", "c", "d", "e")); ListIterator<String> iter = list.listIterator(); while (iter.hasNext()) { int index = iter.nextIndex(); iter.next(); iter.set("" + index); } System.out.println(list); } }

Результат выполнения кода:

[0, 1, 2, 3, 4]

Пример

Давайте добавим новый элемент в список во время итерации, используя метод add:

import java.util.ArrayList; import java.util.List; import java.util.ListIterator; public class Main { public static void main(String[] args) { List<String> list = new ArrayList<>(List.of("a", "b", "c", "d", "e")); ListIterator<String> iter = list.listIterator(); while (iter.hasNext()) { String element = iter.next(); if (element.equals("c")) { iter.add("12345"); } } System.out.println(list); } }

Результат выполнения кода:

[a, b, c, 12345, d, e]

Смотрите также

  • интерфейс Iterator,
    который является базовым итератором коллекций
  • метод hasPrevious,
    который проверяет наличие предыдущего элемента
  • метод previous,
    который возвращает предыдущий элемент
  • метод add,
    который вставляет элемент во время итерации
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить