Функция withIndex
Функция withIndex возвращает итератор, который предоставляет доступ
к элементам коллекции вместе с их индексами. Каждый элемент представляется
в виде объекта IndexedValue, содержащего свойства index (индекс)
и value (значение элемента). Функция работает лениво, не создавая
новую коллекцию в памяти.
Импорт
import kotlin.collections.withIndex
Синтаксис
fun <T> Array<out T>.withIndex(): Iterable<IndexedValue<T>>
fun <T> Iterable<T>.withIndex(): Iterable<IndexedValue<T>>
fun <K, V> Map<out K, V>.withIndex(): Iterable<IndexedValue<Map.Entry<K, V>>>
Для каких типов коллекций работает
Функция withIndex доступна для следующих типов коллекций:
Array- массивы любого типаList- спискиSet- множестваMap- словари (возвращает пары ключ-значение с индексами)Iterable- любые итерируемые коллекцииSequence- последовательности
Пример
Использование withIndex с массивом:
val arr = arrayOf('a', 'b', 'c', 'd', 'e')
for ((index, value) in arr.withIndex()) {
println("Index: $index, Value: $value")
}
Результат выполнения кода:
Index: 0, Value: a
Index: 1, Value: b
Index: 2, Value: c
Index: 3, Value: d
Index: 4, Value: e
Пример
Использование withIndex со списком:
val list = listOf(10, 20, 30, 40, 50)
val indexedValues = list.withIndex()
indexedValues.forEach {
println("${it.index}: ${it.value}")
}
Результат выполнения кода:
0: 10
1: 20
2: 30
3: 40
4: 50
Пример
Использование withIndex с множеством:
val set = setOf("apple", "banana", "cherry")
set.withIndex().forEach { (index, value) ->
println("Element at $index is $value")
}
Результат выполнения кода:
Element at 0 is apple
Element at 1 is banana
Element at 2 is cherry
Пример
Использование withIndex со словарем:
val 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}")
}
Результат выполнения кода:
Index: 0, Key: a, Value: 1
Index: 1, Key: b, Value: 2
Index: 2, Key: c, Value: 3
Смотрите также
-
функцию
forEachIndexed,
которая выполняет действие для каждого элемента с индексом -
функцию
mapIndexed,
которая преобразует элементы с учетом их индексов -
функцию
filterIndexed,
которая фильтрует элементы с учетом их индексов -
функцию
indices,
которая возвращает диапазон индексов коллекции