Интерфейс MutableIterator
Интерфейс MutableIterator наследуется от интерфейса
Iterator и добавляет метод для удаления текущего элемента
из коллекции во время итерации. Он используется для модификации
коллекций во время их обхода.
Импорт
import kotlin.collections.MutableIterator
Синтаксис
interface MutableIterator<T> : Iterator<T> {
fun remove()
}
Пример
Удаление элементов из изменяемого списка с помощью итератора:
val 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)
Результат выполнения кода:
[1, 3, 5]
Пример
Удаление строк из изменяемого множества:
val words = mutableSetOf("apple", "banana", "cherry", "date")
val iterator = words.iterator()
while (iterator.hasNext()) {
val word = iterator.next()
if (word.length > 5) {
iterator.remove()
}
}
println(words)
Результат выполнения кода:
[apple, date]
Пример
Использование цикла for с проверкой условия для удаления элементов:
val numbers = mutableListOf(10, 15, 20, 25, 30)
val iterator = numbers.listIterator()
for (element in iterator) {
if (element < 20) {
iterator.remove()
}
}
println(numbers)
Результат выполнения кода:
[20, 25, 30]
Пример
Удаление всех элементов из коллекции с помощью итератора:
val items = mutableListOf('a', 'b', 'c', 'd', 'e')
val iterator = items.iterator()
while (iterator.hasNext()) {
iterator.next()
iterator.remove()
}
println(items)
Результат выполнения кода:
[]
Важные замечания
Метод remove можно вызывать только после успешного вызова
метода next. Попытка вызвать remove без предварительного
вызова next приведет к исключению
IllegalStateException.
val numbers = mutableListOf(1, 2, 3)
val iterator = numbers.iterator()
try {
iterator.remove()
} catch (e: IllegalStateException) {
println("Error: ${e.message}")
}
Результат выполнения кода:
Error: The next() method has not yet been called, or the remove() method has already been called after the last call to the next() method
Смотрите также
-
интерфейс
Iterator,
базовый интерфейс для итераторов -
интерфейс
MutableCollection,
изменяемая коллекция элементов -
интерфейс
ListIterator,
итератор для списков с двунаправленным обходом -
интерфейс
MutableListIterator,
изменяемый итератор для списков