Что такое функция min

Ответ

Функция min возвращает минимальное значение из переданных аргументов или коллекции. В Kotlin она доступна как для примитивов, так и для объектов (с компаратором).

Пример:

val numbers = listOf(5, 2, 8, 1)
val minNumber = numbers.min() // 1

Для объектов можно использовать minBy или minWith:

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

Важно:

  • min() бросает NoSuchElementException для пустой коллекции.
  • Для nullable-значений используй minOrNull().

Ответ 18+ 🔞

Ну, слушай, история про min — это вообще классика, ёпта. Представь, у тебя куча чисел, как будто ты в магазине смотрёшь цены на пиво, и тебе надо найти самое дешёвое, чтобы больше на закуску осталось. Вот функция min — она как раз этот самый дешёвый вариант и выковыривает.

Вот смотри, простой пример, чтоб совсем уж охуенно понятно было:

val numbers = listOf(5, 2, 8, 1)
val minNumber = numbers.min() // 1

Видишь? Из списка [5, 2, 8, 1] она тебе вытащит единичку. Ядрёна вошь, да? Всё просто, как три копейки.

А теперь, чувак, самое интересное. А что, если у тебя там не просто цифры, а, допустим, объекты? Ну, там, люди с именами и возрастом. Ты же не будешь их вручную перебирать, бздеть над каждым? Не, хуй с горы! Для этого есть minBy или minWith.

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

Вот тут мы говорим: «Э, ботва, найди мне человека с минимальным возрастом (it.age)». И она тебе выдаёт Боба, которому 25. Удивление пиздец, как удобно!

Но, бля, важный момент, а то доверия ебать ноль!

Первое. Если коллекция пустая, то min() тебе впендюрит исключение NoSuchElementException. То есть, если ты пришёл в магазин, а пива вообще нет, то и искать самую дешёвую бутылку — манда с ушами. Программа просто накроется медным тазом с ошибкой.

Второе. Поэтому, если есть хоть малейшее подозрение ебать чувствую, что список может быть пустым, используй minOrNull(). Она в таком случае просто вернёт null, и ты спокойно обработаешь эту ситуацию, не вздрачивая себе нервы.

Короче, min — штука мощная, но ходишь ты по охуенно тонкому льду, если не учитываешь крайние случаи. Запомни это, и будет тебе хиросима, а не ошибка в рантайме.