Интерфейс Iterator
Интерфейс Iterator предоставляет стандартный способ
последовательного доступа к элементам коллекции без раскрытия
её внутренней структуры. Он содержит методы для проверки
наличия следующего элемента и получения текущего элемента.
Импорт
kotlinimport kotlin.collections.Iterator
Синтаксис
kotlininterface Iterator<T>
Методы интерфейса
kotlinfun hasNext(): Boolean
kotlinfun next(): T
Пример
Создадим итератор для списка чисел и переберем его элементы:
kotlinval numbers = listOf(1, 2, 3, 4, 5)
val iterator = numbers.iterator()
while (iterator.hasNext()) {
val element = iterator.next()
println(element)
}
Результат выполнения кода:
kotlinInt 1
Int 2
Int 3
Int 4
Int 5
Пример
Использование итератора для массива символов:
kotlinval chars = arrayOf('a', 'b', 'c', 'd', 'e')
val iterator = chars.iterator()
while (iterator.hasNext()) {
val element = iterator.next()
println(element)
}
Результат выполнения кода:
kotlinChar a
Char b
Char c
Char d
Char e
Пример
Попытка вызвать next когда элементов больше нет,
вызывает исключение NoSuchElementException:
kotlinval numbers = listOf(1, 2)
val iterator = numbers.iterator()
println(iterator.next())
println(iterator.next())
println(iterator.next()) // Exception
Результат выполнения кода:
kotlinInt 1
Int 2
Exception in thread "main" java.util.NoSuchElementException
Пример
Итераторы также поддерживаются для MutableList
и позволяют удалять элементы во время итерации:
kotlinval numbers = mutableListOf(1, 2, 3, 4, 5)
val iterator = numbers.iterator()
while (iterator.hasNext()) {
val element = iterator.next()
if (element % 2 == 0) {
iterator.remove()
}
}
println(numbers)
Результат выполнения кода:
kotlin[1, 3, 5]
Смотрите также
-
интерфейс
Iterable,
который представляет коллекцию, поддерживающую итерацию -
интерфейс
ListIterator,
который предоставляет двунаправленную итерацию по спискам -
интерфейс
MutableIterator,
который добавляет возможность удаления элементов во время итерации