Функция 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

Смотрите также

  • функцию max,
    которая находит максимальный элемент без преобразования
  • функцию maxOf,
    которая возвращает максимальное значение функции-преобразователя
  • функцию minBy,
    которая находит минимальный элемент по ключу