Функция asIterable

Функция asIterable преобразует исходный массив или коллекцию в объект, реализующий интерфейс Iterable. Это позволяет использовать полученный объект в циклах и других конструкциях, требующих итерируемую коллекцию. Функция не создает копию данных, а возвращает представление оригинальной коллекции в виде Iterable.

Синтаксис

kotlinfun <T> Array<out T>.asIterable(): Iterable<T>
kotlinfun ByteArray.asIterable(): Iterable<Byte>
kotlinfun ShortArray.asIterable(): Iterable<Short>
kotlinfun IntArray.asIterable(): Iterable<Int>
kotlinfun LongArray.asIterable(): Iterable<Long>
kotlinfun FloatArray.asIterable(): Iterable<Float>
kotlinfun DoubleArray.asIterable(): Iterable<Double>
kotlinfun BooleanArray.asIterable(): Iterable<Boolean>
kotlinfun CharArray.asIterable(): Iterable<Char>
kotlinfun <T> Iterable<T>.asIterable(): Iterable<T>
kotlinfun <T> Collection<T>.asIterable(): Iterable<T>

Пример

Преобразуем массив символов в Iterable и проитерируемся по нему:

kotlinval charArray = charArrayOf('a', 'b', 'c', 'd', 'e')
val iterable: Iterable<Char> = charArray.asIterable()

for (char in iterable) {
  println(char)
}

Результат выполнения кода:

kotlina
b
c
d
e

Пример

Преобразуем массив чисел в Iterable и используем методы интерфейса Iterable:

kotlinval intArray = intArrayOf(1, 2, 3, 4, 5)
val iterable: Iterable<Int> = intArray.asIterable()

val iterator = iterable.iterator()
while (iterator.hasNext()) {
  print(iterator.next())
  print(" ")
}

Результат выполнения кода:

kotlin1 2 3 4 5 

Пример

Преобразуем список в Iterable и используем его в функции высшего порядка:

kotlinval list = listOf(10, 20, 30, 40, 50)
val iterable: Iterable<Int> = list.asIterable()

val filtered = iterable.filter { it > 25 }
println(filtered)

Результат выполнения кода:

kotlin[30, 40, 50]

Пример

Покажем, что asIterable не создает копию, а работает с оригинальным массивом:

kotlinval originalArray = arrayOf(1, 2, 3)
val iterable: Iterable<Int> = originalArray.asIterable()

originalArray[0] = 100

println("Original array: ${originalArray.joinToString()}")
println("Iterable: ${iterable.joinToString()}")

Результат выполнения кода:

kotlinOriginal array: 100, 2, 3
Iterable: 100, 2, 3

Смотрите также

  • функцию toList,
    которая создает новый список из массива или коллекции
  • функцию toSet,
    которая создает множество из массива или коллекции
  • функцию asList,
    которая преобразует массив в список без копирования
  • функцию asSequence,
    которая преобразует коллекцию в последовательность