Функция maxByOrNull
Функция maxByOrNull возвращает первый элемент коллекции,
который дает максимальное значение при применении к нему
функции-селектора selector. Если коллекция пуста,
функция возвращает null. Работает с массивами Array,
списками List, множествами Set и другими коллекциями.
Импорт
import kotlin.collections.maxByOrNull
Синтаксис
// Для Iterable
inline fun <T, R : Comparable<R>> Iterable<T>.maxByOrNull(
selector: (T) -> R
): T?
// Для Array
inline fun <T, R : Comparable<R>> Array<out T>.maxByOrNull(
selector: (T) -> R
): T?
Пример
Найдем максимальный элемент в списке чисел по их абсолютному значению:
val numbers = listOf(-10, 5, -15, 8, -3)
val res = numbers.maxByOrNull { Math.abs(it) }
println(res)
Результат выполнения кода:
Int -15
Пример
Найдем самую длинную строку в массиве:
val strings = arrayOf("a", "abc", "ab", "abcde", "abcd")
val res = strings.maxByOrNull { it.length }
println(res)
Результат выполнения кода:
String "abcde"
Пример
Найдем элемент с максимальной длиной в пустой коллекции:
val emptyList = emptyList<String>()
val res = emptyList.maxByOrNull { it.length }
println(res)
Результат выполнения кода:
null
Пример
Найдем максимальный элемент в множестве по последнему символу строки:
val words = setOf("apple", "banana", "cherry", "date")
val res = words.maxByOrNull { it.last() }
println(res)
Результат выполнения кода:
String "date"
Поддерживаемые типы коллекций
Функция maxByOrNull доступна для следующих типов коллекций:
Array<T>List<T>Set<T>Iterable<T>Sequence<T>Map<K, V>(работает с записями Map.Entry)