АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
174 of 1310 menu
Новый формат обучения! Репетиторство по программированию. Есть еще 3 свободных места! Жми для подробностей.

Интерфейс ListIterator

Интерфейс ListIterator расширяет Iterator и предоставляет дополнительные методы для двунаправленного обхода элементов списка. Позволяет перемещаться как вперед, так и назад по элементам, получать индекс текущего элемента, а также модифицировать список через методы set и add.

Импорт

import kotlin.collections.ListIterator

Синтаксис

interface ListIterator<out T> : Iterator<T>

Методы интерфейса

Основные методы интерфейса ListIterator:

fun hasNext(): Boolean fun next(): T fun hasPrevious(): Boolean fun previous(): T fun nextIndex(): Int fun previousIndex(): Int

Для изменяемых итераторов:

fun set(element: E) fun add(element: E)

Пример

Создадим список и получим для него итератор:

val list = listOf('a', 'b', 'c', 'd', 'e') val iterator: ListIterator<Char> = list.listIterator() while (iterator.hasNext()) { val element = iterator.next() println("Element: $element, Index: ${iterator.nextIndex() - 1}") }

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

Element: a, Index: 0 Element: b, Index: 1 Element: c, Index: 2 Element: d, Index: 3 Element: e, Index: 4

Пример

Обход списка в обратном направлении:

val list = listOf(1, 2, 3, 4, 5) val iterator = list.listIterator(list.size) while (iterator.hasPrevious()) { val element = iterator.previous() println("Element: $element, Previous index: ${iterator.previousIndex() + 1}") }

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

Element: 5, Previous index: 4 Element: 4, Previous index: 3 Element: 3, Previous index: 2 Element: 2, Previous index: 1 Element: 1, Previous index: 0

Пример

Использование изменяемого итератора для модификации списка:

val mutableList = mutableListOf("one", "two", "three") val iterator = mutableList.listIterator() while (iterator.hasNext()) { val element = iterator.next() if (element == "two") { iterator.set("TWO_MODIFIED") } } println(mutableList)

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

[one, TWO_MODIFIED, three]

Пример

Добавление элементов через итератор:

val numbers = mutableListOf(1, 3, 5) val iterator = numbers.listIterator() iterator.next() iterator.add(2) iterator.next() iterator.add(4) println(numbers)

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

[1, 2, 3, 4, 5]

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

  • интерфейс Iterator,
    базовый интерфейс для однонаправленных итераторов
  • интерфейс MutableListIterator,
    интерфейс для изменяемых двунаправленных итераторов
  • класс List,
    интерфейс для работы со списками элементов
  • класс MutableList,
    интерфейс для работы с изменяемыми списками