Функция withIndex

Функция withIndex возвращает итератор, который предоставляет доступ к элементам коллекции вместе с их индексами. Каждый элемент представляется в виде объекта IndexedValue, содержащего свойства index (индекс) и value (значение элемента). Функция работает лениво, не создавая новую коллекцию в памяти.

Импорт

kotlinimport kotlin.collections.withIndex

Синтаксис

kotlinfun <T> Array<out T>.withIndex(): Iterable<IndexedValue<T>>
kotlinfun <T> Iterable<T>.withIndex(): Iterable<IndexedValue<T>>
kotlinfun <K, V> Map<out K, V>.withIndex(): Iterable<IndexedValue<Map.Entry<K, V>>>

Для каких типов коллекций работает

Функция withIndex доступна для следующих типов коллекций:

Пример

Использование withIndex с массивом:

kotlinval arr = arrayOf('a', 'b', 'c', 'd', 'e')

for ((index, value) in arr.withIndex()) {
  println("Index: $index, Value: $value")
}

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

kotlinIndex: 0, Value: a
Index: 1, Value: b
Index: 2, Value: c
Index: 3, Value: d
Index: 4, Value: e

Пример

Использование withIndex со списком:

kotlinval list = listOf(10, 20, 30, 40, 50)
val indexedValues = list.withIndex()

indexedValues.forEach { 
  println("${it.index}: ${it.value}") 
}

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

kotlin0: 10
1: 20
2: 30
3: 40
4: 50

Пример

Использование withIndex с множеством:

kotlinval set = setOf("apple", "banana", "cherry")

set.withIndex().forEach { (index, value) ->
  println("Element at $index is $value")
}

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

kotlinElement at 0 is apple
Element at 1 is banana
Element at 2 is cherry

Пример

Использование withIndex со словарем:

kotlinval map = mapOf("a" to 1, "b" to 2, "c" to 3)

for ((index, entry) in map.withIndex()) {
  println("Index: $index, Key: ${entry.key}, Value: ${entry.value}")
}

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

kotlinIndex: 0, Key: a, Value: 1
Index: 1, Key: b, Value: 2
Index: 2, Key: c, Value: 3

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

  • функцию forEachIndexed,
    которая выполняет действие для каждого элемента с индексом
  • функцию mapIndexed,
    которая преобразует элементы с учетом их индексов
  • функцию filterIndexed,
    которая фильтрует элементы с учетом их индексов
  • функцию indices,
    которая возвращает диапазон индексов коллекции