Функция forEach
Функция forEach выполняет перебор всех элементов коллекции
и применяет к каждому элементу указанную операцию (лямбда-выражение).
Работает с массивами Array, списками List, множествами Set,
ассоциативными массивами Map и другими типами коллекций,
реализующими интерфейс Iterable.
Синтаксис
Для Iterable:
inline fun <T> Iterable<T>.forEach(action: (T) -> Unit): Unit
Для Array:
inline fun <T> Array<T>.forEach(action: (T) -> Unit): Unit
Для Map:
inline fun <K, V> Map<out K, V>.forEach(action: (Entry<K, V>) -> Unit): Unit
Для примитивных массивов:
inline 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:
val numbers = listOf(1, 2, 3, 4, 5)
numbers.forEach { element ->
println("Element: $element")
}
Результат выполнения кода:
Element: 1
Element: 2
Element: 3
Element: 4
Element: 5
Пример
Перебор элементов массива Array:
val chars = arrayOf('a', 'b', 'c', 'd', 'e')
chars.forEach { char ->
println(char.uppercaseChar())
}
Результат выполнения кода:
A
B
C
D
E
Пример
Перебор элементов ассоциативного массива Map:
val map = mapOf("a" to 1, "b" to 2, "c" to 3)
map.forEach { (key, value) ->
println("Key: $key, Value: $value")
}
Результат выполнения кода:
Key: a, Value: 1
Key: b, Value: 2
Key: c, Value: 3
Пример
Использование ссылки на метод вместо лямбды:
val numbers = listOf(1, 2, 3, 4, 5)
numbers.forEach(::println)
Результат выполнения кода:
1
2
3
4
5
Пример
Перебор элементов с использованием индекса через forEachIndexed:
val list = listOf("apple", "banana", "cherry")
list.forEachIndexed { index, element ->
println("Index: $index, Element: $element")
}
Результат выполнения кода:
Index: 0, Element: apple
Index: 1, Element: banana
Index: 2, Element: cherry
Примечания
Функция forEach не возвращает результат (возвращает Unit)
и предназначена исключительно для выполнения операций над элементами.
Для преобразования элементов в новую коллекцию используйте функцию map.
В отличие от цикла for, функцию forEach нельзя прервать
с помощью оператора break. Для досрочного прерывания перебора
необходимо использовать исключения или другие подходы.
Смотрите также
-
функцию
forEachIndexed,
которая выполняет перебор с передачей индекса элемента -
функцию
onEach,
которая выполняет операцию над каждым элементом и возвращает коллекцию -
функцию
map,
которая преобразует элементы коллекции и возвращает новую коллекцию -
функцию
filter,
которая фильтрует элементы коллекции по условию