Интерфейс 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
,
интерфейс для работы с изменяемыми списками