Функция forEach

Функция forEach выполняет перебор всех элементов коллекции и применяет к каждому элементу указанную операцию (лямбда-выражение). Работает с массивами Array, списками List, множествами Set, ассоциативными массивами Map и другими типами коллекций, реализующими интерфейс Iterable.

Синтаксис

Для Iterable:

kotlininline fun <T> Iterable<T>.forEach(action: (T) -> Unit): Unit

Для Array:

kotlininline fun <T> Array<T>.forEach(action: (T) -> Unit): Unit

Для Map:

kotlininline fun <K, V> Map<out K, V>.forEach(action: (Entry<K, V>) -> Unit): Unit

Для примитивных массивов:

kotlininline fun IntArray.forEach(action: (Int) -> Unit): Unit
inline fun DoubleArray.forEach(action: (Double) -> Unit): Unit
inline fun FloatArray.forEach(action: (Float) -> Unit): Unit
inline fun LongArray.forEach(action: (Long) -> Unit): Unit
inline fun ShortArray.forEach(action: (Short) -> Unit): Unit
inline fun ByteArray.forEach(action: (Byte) -> Unit): Unit
inline fun CharArray.forEach(action: (Char) -> Unit): Unit
inline fun BooleanArray.forEach(action: (Boolean) -> Unit): Unit

Пример

Перебор элементов списка List:

kotlinval numbers = listOf(1, 2, 3, 4, 5)

numbers.forEach { element ->
  println("Element: $element")
}

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

kotlinElement: 1
Element: 2
Element: 3
Element: 4
Element: 5

Пример

Перебор элементов массива Array:

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

chars.forEach { char ->
  println(char.uppercaseChar())
}

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

kotlinA
B
C
D
E

Пример

Перебор элементов ассоциативного массива Map:

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

map.forEach { (key, value) ->
  println("Key: $key, Value: $value")
}

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

kotlinKey: a, Value: 1
Key: b, Value: 2
Key: c, Value: 3

Пример

Использование ссылки на метод вместо лямбды:

kotlinval numbers = listOf(1, 2, 3, 4, 5)

numbers.forEach(::println)

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

kotlin1
2
3
4
5

Пример

Перебор элементов с использованием индекса через forEachIndexed:

kotlinval list = listOf("apple", "banana", "cherry")

list.forEachIndexed { index, element ->
  println("Index: $index, Element: $element")
}

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

kotlinIndex: 0, Element: apple
Index: 1, Element: banana
Index: 2, Element: cherry

Примечания

Функция forEach не возвращает результат (возвращает Unit) и предназначена исключительно для выполнения операций над элементами. Для преобразования элементов в новую коллекцию используйте функцию map.

В отличие от цикла for, функцию forEach нельзя прервать с помощью оператора break. Для досрочного прерывания перебора необходимо использовать исключения или другие подходы.

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

  • функцию forEachIndexed,
    которая выполняет перебор с передачей индекса элемента
  • функцию onEach,
    которая выполняет операцию над каждым элементом и возвращает коллекцию
  • функцию map,
    которая преобразует элементы коллекции и возвращает новую коллекцию
  • функцию filter,
    которая фильтрует элементы коллекции по условию