Интерфейс MutableListIterator
Интерфейс MutableListIterator расширяет ListIterator
и добавляет методы для изменения элементов списка во время итерации.
Позволяет добавлять, заменять и удалять элементы в процессе обхода коллекции.
Импорт
import kotlin.collections.MutableListIterator
Синтаксис
interface MutableListIterator<T> : ListIterator<T>, MutableIterator<T> {
fun add(element: T)
fun set(element: T)
}
Методы
Основные методы интерфейса:
fun add(element: T) // Добавляет элемент перед текущей позицией
fun set(element: T) // Заменяет последний возвращенный элемент
fun remove() // Удаляет последний возвращенный элемент
fun hasNext(): Boolean // Проверяет наличие следующего элемента
fun next(): T // Возвращает следующий элемент
fun hasPrevious(): Boolean // Проверяет наличие предыдущего элемента
fun previous(): T // Возвращает предыдущий элемент
fun nextIndex(): Int // Возвращает индекс следующего элемента
fun previousIndex(): Int // Возвращает индекс предыдущего элемента
Пример
Создадим изменяемый список и получим его итератор:
val list = mutableListOf('a', 'b', 'c', 'd')
val iterator = list.listIterator()
Пример
Добавим новый элемент в середину списка с помощью метода add:
val list = mutableListOf('a', 'b', 'c', 'd')
val iterator = list.listIterator()
iterator.next() // Переходим к 'a'
iterator.next() // Переходим к 'b'
iterator.add('x') // Добавляем 'x' перед 'b'
println(list)
Результат выполнения кода:
['a', 'x', 'b', 'c', 'd']
Пример
Заменим элемент с помощью метода set:
val list = mutableListOf('a', 'b', 'c', 'd')
val iterator = list.listIterator()
iterator.next() // Переходим к 'a'
iterator.next() // Переходим к 'b'
iterator.set('z') // Заменяем 'b' на 'z'
println(list)
Результат выполнения кода:
['a', 'z', 'c', 'd']
Пример
Удалим элемент с помощью метода remove:
val list = mutableListOf('a', 'b', 'c', 'd')
val iterator = list.listIterator()
iterator.next() // Переходим к 'a'
iterator.next() // Переходим к 'b'
iterator.remove() // Удаляем 'b'
println(list)
Результат выполнения кода:
['a', 'c', 'd']
Пример
Итерация в обратном направлении с модификацией:
val list = mutableListOf(1, 2, 3, 4, 5)
val iterator = list.listIterator(list.size) // Старт с конца
while (iterator.hasPrevious()) {
val element = iterator.previous()
if (element % 2 == 0) {
iterator.set(element * 10) // Умножаем четные на 10
}
}
println(list)
Результат выполнения кода:
[1, 20, 3, 40, 5]
Смотрите также
-
интерфейс
ListIterator,
который предоставляет базовую функциональность итерации -
интерфейс
MutableIterator,
который предоставляет методы для удаления элементов -
класс
ArrayList,
который реализует изменяемый список -
интерфейс
MutableList,
который представляет изменяемую коллекцию элементов