Функция maxBy
Функция maxBy возвращает первый элемент коллекции,
который дает наибольшее значение заданной функции-селектора.
Если коллекция пуста, функция возвращает null.
Работает с массивами Array, списками List,
множествами Set и другими итерируемыми коллекциями.
Синтаксис
kotlininline fun <T, R : Comparable<R>> Array<out T>.maxBy(
selector: (T) -> R
): T?
kotlininline fun <T, R : Comparable<R>> Iterable<T>.maxBy(
selector: (T) -> R
): T?
Пример
Найдем максимальный элемент в массиве чисел по их абсолютному значению:
kotlinval numbers = arrayOf(-10, 5, -15, 8, -3)
val res = numbers.maxBy { Math.abs(it) }
println(res)
Результат выполнения кода:
kotlinInt -15
Пример
Найдем самую длинную строку в списке:
kotlinval words = listOf("cat", "elephant", "dog", "mouse")
val res = words.maxBy { it.length }
println(res)
Результат выполнения кода:
kotlinString "elephant"
Пример
Найдем элемент с максимальной суммой цифр в числе:
kotlinval numbersSet = setOf(123, 45, 678, 9)
val res = numbersSet.maxBy {
it.toString().sumOf { digit -> digit.digitToInt() }
}
println(res)
Результат выполнения кода:
kotlinInt 678
Пример
Работа с пустой коллекцией возвращает null:
kotlinval emptyList = emptyList<String>()
val res = emptyList.maxBy { it.length }
println(res)
Результат выполнения кода:
kotlinnull
Пример
Поиск максимального элемента в массиве символов по их кодовой точке:
kotlinval chars = arrayOf('a', 'Z', '0', '9')
val res = chars.maxBy { it.code }
println(res)
Результат выполнения кода:
kotlinChar Z