НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
433 of 1310 menu

Функция minBy

Функция minBy применяется к коллекциям и возвращает первый элемент, имеющий наименьшее значение, вычисленное с помощью указанной ключевой функции selector. Если коллекция пуста, функция выбрасывает исключение NoSuchElementException.

Импорт

import kotlin.collections.minBy

Синтаксис

// Для Array<T> inline fun <T, R : Comparable<R>> Array<out T>.minBy( selector: (T) -> R ): T
// Для Iterable<T> inline fun <T, R : Comparable<R>> Iterable<T>.minBy( selector: (T) -> R ): T
// Для Map<K, V> inline fun <K, V, R : Comparable<R>> Map<out K, V>.minBy( selector: (Map.Entry<K, V>) -> R ): Map.Entry<K, V>

Поддерживаемые типы коллекций

Функция minBy доступна для следующих типов коллекций:

  • Array - массивы
  • List - списки
  • Set - множества
  • Map - словари (работает с записями Map.Entry)
  • Iterable - любые итерируемые коллекции
  • Sequence - последовательности

Пример

Найдем минимальный элемент в списке чисел по их абсолютному значению:

val numbers = listOf(-5, 2, -8, 1, 4) val minByAbs = numbers.minBy { Math.abs(it) } println(minByAbs)

Результат выполнения кода:

Int 1

Пример

Найдем минимальный элемент в массиве строк по их длине:

val strings = arrayOf("apple", "kiwi", "banana", "pear") val shortest = strings.minBy { it.length } println(shortest)

Результат выполнения кода:

String "kiwi"

Пример

Найдем минимальную запись в словаре по значению:

val map = mapOf("a" to 10, "b" to 5, "c" to 15) val minEntry = map.minBy { it.value } println(minEntry)

Результат выполнения кода:

b=5

Пример

Работа с пользовательскими объектами - найдем самого молодого человека:

data class Person(val name: String, val age: Int) val people = listOf( Person("John", 25), Person("Alice", 30), Person("Bob", 22) ) val youngest = people.minBy { it.age } println(youngest)

Результат выполнения кода:

Person(name=Bob, age=22)

Обработка пустых коллекций

Для пустых коллекций функция minBy выбрасывает исключение. Для безопасной работы используйте minByOrNull:

val emptyList = emptyList<Int>() try { val result = emptyList.minBy { it } println(result) } catch (e: NoSuchElementException) { println("Collection is empty") } val safeResult = emptyList.minByOrNull { it } println(safeResult)

Результат выполнения кода:

Collection is empty null

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

  • функцию min,
    которая находит минимальный элемент без ключевой функции
  • функцию maxBy,
    которая находит максимальный элемент по ключу
  • функцию sortedBy,
    которая сортирует коллекцию по ключу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить