Интерфейс MutableIterable
Интерфейс MutableIterable наследуется от Iterable
и представляет коллекцию элементов, которая поддерживает
итерацию с возможностью удаления элементов во время
прохождения по коллекции. Основное отличие от Iterable -
наличие метода iterator(), который возвращает
MutableIterator вместо обычного Iterator.
Импорт
import kotlin.collections.MutableIterable
Синтаксис
interface MutableIterable<out T> : Iterable<T>
Пример
Создадим изменяемый список и продемонстрируем
использование MutableIterable для удаления
элементов во время итерации:
val numbers = mutableListOf(1, 2, 3, 4, 5, 6)
val iterator = numbers.iterator()
while (iterator.hasNext()) {
val number = iterator.next()
if (number % 2 == 0) {
iterator.remove()
}
}
println(numbers)
Результат выполнения кода:
List<Int> [1, 3, 5]
Пример
Использование цикла for с MutableIterable
и удаление элементов через итератор:
val letters = mutableListOf('a', 'b', 'c', 'd', 'e')
val iter = letters.iterator()
for (letter in iter) {
if (letter == 'c' || letter == 'e') {
iter.remove()
}
}
println(letters)
Результат выполнения кода:
List<Char> ['a', 'b', 'd']
Пример
Демонстрация работы с MutableIterable
для массива символов:
val chars = arrayOf('x', 'y', 'z').toMutableList()
val mutableIter = chars.iterator()
while (mutableIter.hasNext()) {
val current = mutableIter.next()
if (current == 'y') {
mutableIter.remove()
}
}
println(chars)
Результат выполнения кода:
List<Char> ['x', 'z']
Методы
abstract fun iterator(): MutableIterator<T>
Примечания
Важно помнить, что метод remove() можно вызывать
только после вызова next(). Попытка вызвать
remove() без предварительного вызова next()
приведет к исключению IllegalStateException.
val numbers = mutableListOf(1, 2, 3)
val iter = numbers.iterator()
iter.remove() // IllegalStateException
Смотрите также
-
интерфейс
Iterable,
который представляет базовую функциональность для итерации -
интерфейс
MutableIterator,
который предоставляет методы для изменения коллекции во время итерации -
интерфейс
MutableCollection,
который расширяетMutableIterableи добавляет методы для изменения коллекции -
интерфейс
List,
который представляет упорядоченную коллекцию элементов