Функция minByOrNull
Функция minByOrNull находит в коллекции элемент,
для которого функция-селектор возвращает минимальное значение.
Если коллекция пустая, функция возвращает null.
Функция работает с массивами, списками, множествами,
ассоциативными массивами и другими типами коллекций.
Импорт
import kotlin.collections.minByOrNull
Синтаксис
// Для Iterable (List, Set)
inline fun <T, R : Comparable<R>> Iterable<T>.minByOrNull(
selector: (T) -> R
): T?
// Для Array
inline fun <T, R : Comparable<R>> Array<out T>.minByOrNull(
selector: (T) -> R
): T?
// Для Map
inline fun <K, V, R : Comparable<R>> Map<out K, V>.minByOrNull(
selector: (Entry<K, V>) -> R
): Entry<K, V>?
Пример
Найдем минимальный элемент в списке чисел:
val numbers = listOf(5, 2, 8, 1, 9)
val res = numbers.minByOrNull { it }
println(res)
Результат выполнения кода:
Int 1
Пример
Найдем элемент с минимальной длиной в массиве строк:
val strings = arrayOf("abcde", "12", "hello", "w")
val res = strings.minByOrNull { it.length }
println(res)
Результат выполнения кода:
String "w"
Пример
Найдем запись с минимальным значением в ассоциативном массиве:
val map = mapOf("a" to 10, "b" to 5, "c" to 15)
val res = map.minByOrNull { it.value }
println(res)
Результат выполнения кода:
b=5
Пример
Работа с пустой коллекцией возвращает null:
val emptyList = emptyList<Int>()
val res = emptyList.minByOrNull { it }
println(res)
Результат выполнения кода:
null
Пример
Использование сложной функции-селектора:
data class Person(val name: String, val age: Int)
val people = listOf(
Person("John", 25),
Person("Alice", 30),
Person("Bob", 20)
)
val youngest = people.minByOrNull { it.age }
println(youngest)
Результат выполнения кода:
Person(name=Bob, age=20)