Ответ
Функция 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 — штука мощная, но ходишь ты по охуенно тонкому льду, если не учитываешь крайние случаи. Запомни это, и будет тебе хиросима, а не ошибка в рантайме.