minByOrNull

inline fun <T, R : Comparable<R>> Array<out T>.minByOrNull(selector: (T) -> R): T?
inline fun <R : Comparable<R>> ByteArray.minByOrNull(selector: (Byte) -> R): Byte?
inline fun <R : Comparable<R>> ShortArray.minByOrNull(selector: (Short) -> R): Short?
inline fun <R : Comparable<R>> IntArray.minByOrNull(selector: (Int) -> R): Int?
inline fun <R : Comparable<R>> LongArray.minByOrNull(selector: (Long) -> R): Long?
inline fun <R : Comparable<R>> FloatArray.minByOrNull(selector: (Float) -> R): Float?
inline fun <R : Comparable<R>> DoubleArray.minByOrNull(selector: (Double) -> R): Double?
inline fun <R : Comparable<R>> BooleanArray.minByOrNull(selector: (Boolean) -> R): Boolean?
inline fun <R : Comparable<R>> CharArray.minByOrNull(selector: (Char) -> R): Char?
inline fun <T, R : Comparable<R>> Iterable<T>.minByOrNull(selector: (T) -> R): T?
inline fun <R : Comparable<R>> UIntArray.minByOrNull(selector: (UInt) -> R): UInt?
inline fun <R : Comparable<R>> ULongArray.minByOrNull(selector: (ULong) -> R): ULong?
inline fun <R : Comparable<R>> UByteArray.minByOrNull(selector: (UByte) -> R): UByte?
inline fun <R : Comparable<R>> UShortArray.minByOrNull(selector: (UShort) -> R): UShort?

Returns the first element yielding the smallest value of the given function or null if there are no elements.

Since Kotlin

1.4

Samples

import samples.*
import kotlin.test.*
fun main() { 
   //sampleStart 
   val list = listOf("abcd", "abc", "ab", "abcde")
val shortestString = list.minByOrNull { it.length }
assertPrints(shortestString, "ab")

val emptyList = emptyList<String>()
val emptyMin = emptyList.minByOrNull { it.length }
assertPrints(emptyMin, "null") 
   //sampleEnd
}

inline fun <K, V, R : Comparable<R>> Map<out K, V>.minByOrNull(selector: (Map.Entry<K, V>) -> R): Map.Entry<K, V>?

Returns the first entry yielding the smallest value of the given function or null if there are no entries.

Since Kotlin

1.4

Samples

import samples.*
import kotlin.test.*
fun main() { 
   //sampleStart 
   val list = listOf("abcd", "abc", "ab", "abcde")
val shortestString = list.minByOrNull { it.length }
assertPrints(shortestString, "ab")

val emptyList = emptyList<String>()
val emptyMin = emptyList.minByOrNull { it.length }
assertPrints(emptyMin, "null") 
   //sampleEnd
}