Функция forEachIndexed
Функция forEachIndexed выполняет перебор элементов коллекции,
предоставляя доступ как к индексу элемента, так и к его значению.
Принимает лямбда-функцию с двумя параметрами: первый параметр
содержит индекс элемента, второй параметр содержит значение элемента.
Функция не возвращает результат, а используется для side-эффектов.
Импорт
import kotlin.collections.forEachIndexed
Синтаксис
inline fun <T> Array<out T>.forEachIndexed(
action: (index: Int, T) -> Unit
): Unit
inline fun <T> Iterable<T>.forEachIndexed(
action: (index: Int, T) -> Unit
): Unit
inline fun <K, V> Map<out K, V>.forEachIndexed(
action: (index: Int, Entry<K, V>) -> Unit
): Unit
Для каких типов коллекций работает
Функция forEachIndexed доступна для следующих типов коллекций:
Array- массивы элементовList- списки элементовSet- множества элементовMap- ассоциативные массивы (словари)Iterable- любые итерируемые коллекцииSequence- последовательности
Пример
Переберем массив строк с выводом индекса и значения каждого элемента:
val arr = arrayOf("a", "b", "c", "d", "e")
arr.forEachIndexed { index, value ->
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
Пример
Переберем список чисел с доступом к индексу и значению:
val numbers = listOf(10, 20, 30, 40, 50)
numbers.forEachIndexed { idx, num ->
println("Element at position $idx is $num")
}
Результат выполнения кода:
Element at position 0 is 10
Element at position 1 is 20
Element at position 2 is 30
Element at position 3 is 40
Element at position 4 is 50
Пример
Использование forEachIndexed с множествами:
val set = setOf("x", "y", "z")
set.forEachIndexed { index, element ->
println("Set element $index: $element")
}
Результат выполнения кода:
Set element 0: x
Set element 1: y
Set element 2: z
Пример
Перебор ассоциативного массива с использованием forEachIndexed:
val map = mapOf("key1" to 100, "key2" to 200, "key3" to 300)
map.forEachIndexed { index, entry ->
println("Index: $index, Key: ${entry.key}, Value: ${entry.value}")
}
Результат выполнения кода:
Index: 0, Key: key1, Value: 100
Index: 1, Key: key2, Value: 200
Index: 2, Key: key3, Value: 300
Смотрите также
-
функцию
forEach,
которая выполняет перебор элементов без доступа к индексу -
функцию
withIndex,
которая возвращает итератор с доступом к индексу и значению -
функцию
mapIndexed,
которая преобразует коллекцию с доступом к индексу -
функцию
filterIndexed,
которая фильтрует коллекцию с доступом к индексу