Функция firstOrNull
Функция firstOrNull возвращает первый элемент коллекции,
удовлетворяющий заданному предикату (условию). Если ни один элемент
не соответствует условию или коллекция пуста, функция возвращает
null. Функция работает с различными типами коллекций:
Array, List, Set, Map и другими.
Синтаксис
// Для коллекций с элементами любого типа
inline fun <T> Iterable<T>.firstOrNull(): T?
// С предикатом (условием поиска)
inline fun <T> Iterable<T>.firstOrNull(
predicate: (T) -> Boolean
): T?
Пример
Найдем первый четный элемент в списке чисел:
val numbers = listOf(1, 3, 5, 8, 9, 12)
val res = numbers.firstOrNull { it % 2 == 0 }
println(res)
Результат выполнения кода:
Int 8
Пример
Поиск первого элемента, начинающегося с определенной буквы в массиве строк:
val words = arrayOf("apple", "banana", "cherry", "date")
val res = words.firstOrNull { it.startsWith("c") }
println(res)
Результат выполнения кода:
String "cherry"
Пример
Поиск первого элемента в Set, который больше определенного значения:
val numberSet = setOf(10, 20, 30, 40, 50)
val res = numberSet.firstOrNull { it > 25 }
println(res)
Результат выполнения кода:
Int 30
Пример
Поиск первого значения в Map, удовлетворяющего условию:
val map = mapOf("a" to 1, "b" to 2, "c" to 3, "d" to 4)
val res = map.values.firstOrNull { it > 2 }
println(res)
Результат выполнения кода:
Int 3
Пример
Когда элемент не найден, функция возвращает null:
val numbers = listOf(1, 3, 5, 7, 9)
val res = numbers.firstOrNull { it % 2 == 0 }
println(res)
Результат выполнения кода:
null
Пример
Использование с безопасным вызовом для обработки результата:
val numbers = listOf(1, 2, 3, 4, 5)
val result = numbers.firstOrNull { it > 10 }?.let {
"Found: $it"
} ?: "Not found"
println(result)
Результат выполнения кода:
String "Not found"
Смотрите также
-
функцию
first,
которая возвращает первый элемент или бросает исключение -
функцию
lastOrNull,
которая возвращает последний элемент илиnull -
функцию
singleOrNull,
которая возвращает единственный элемент илиnull -
функцию
find,
которая является синонимом firstOrNull