Функция forEachIndexed

Функция forEachIndexed выполняет перебор элементов коллекции, предоставляя доступ как к индексу элемента, так и к его значению. Принимает лямбда-функцию с двумя параметрами: первый параметр содержит индекс элемента, второй параметр содержит значение элемента. Функция не возвращает результат, а используется для side-эффектов.

Импорт

kotlinimport kotlin.collections.forEachIndexed

Синтаксис

kotlininline fun <T> Array<out T>.forEachIndexed(
  action: (index: Int, T) -> Unit
): Unit
kotlininline fun <T> Iterable<T>.forEachIndexed(
  action: (index: Int, T) -> Unit
): Unit
kotlininline fun <K, V> Map<out K, V>.forEachIndexed(
  action: (index: Int, Entry<K, V>) -> Unit
): Unit

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

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

Пример

Переберем массив строк с выводом индекса и значения каждого элемента:

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

arr.forEachIndexed { index, value ->
  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

Пример

Переберем список чисел с доступом к индексу и значению:

kotlinval numbers = listOf(10, 20, 30, 40, 50)

numbers.forEachIndexed { idx, num ->
  println("Element at position $idx is $num")
}

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

kotlinElement 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 с множествами:

kotlinval set = setOf("x", "y", "z")

set.forEachIndexed { index, element ->
  println("Set element $index: $element")
}

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

kotlinSet element 0: x
Set element 1: y
Set element 2: z

Пример

Перебор ассоциативного массива с использованием forEachIndexed:

kotlinval map = mapOf("key1" to 100, "key2" to 200, "key3" to 300)

map.forEachIndexed { index, entry ->
  println("Index: $index, Key: ${entry.key}, Value: ${entry.value}")
}

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

kotlinIndex: 0, Key: key1, Value: 100
Index: 1, Key: key2, Value: 200
Index: 2, Key: key3, Value: 300

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

  • функцию forEach,
    которая выполняет перебор элементов без доступа к индексу
  • функцию withIndex,
    которая возвращает итератор с доступом к индексу и значению
  • функцию mapIndexed,
    которая преобразует коллекцию с доступом к индексу
  • функцию filterIndexed,
    которая фильтрует коллекцию с доступом к индексу