НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
167 of 1310 menu

Интерфейс 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,
    который представляет упорядоченную коллекцию элементов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить