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