max Of With Or Null
Начиная с Kotlin: 1.4
inline fun <T, R> Array<out T>.maxOfWithOrNull(comparator: Comparator<in R>, selector: (T) -> R): R?
Возвращает наибольшее значение согласно указанному компаратору среди всех значений, полученных функцией селектор, применённой к каждому элементу массива, или null, если массив пуст.
Если несколько элементов дают максимальное значение, эта функция возвращает первое из них.
Примеры
import kotlin.math.*
import kotlin.test.*
fun main() {
//sampleStart
data class Book(val title: String, val publishYear: Int, val rating: Double)
// A custom Comparator that orders strings by their length
val lengthComparator = compareBy<String> { it.length }
// The longest and shortest book titles
val books = listOf(
Book("Red Sand", 2004, 3.5),
Book("Silver Bullet", 2009, 4.4),
Book("Clear Water", 2018, 4.1),
Book("Night Sky", 2023, 3.8)
)
println(books.maxOfWith(lengthComparator) { it.title }) // Silver Bullet
println(books.minOfWith(lengthComparator) { it.title }) // Red Sand
val emptyList = listOf<Book>()
// maxOfWith() and minOfWith() throw if the collection is empty
// emptyList.maxOfWith(lengthComparator) { it.title } // will fail with NoSuchElementException
// emptyList.minOfWith(lengthComparator) { it.title } // will fail with NoSuchElementException
// maxOfWithOrNull() and minOfWithOrNull() return null if the collection is empty
println(emptyList.maxOfWithOrNull(lengthComparator) { it.title }) // null
println(emptyList.minOfWithOrNull(lengthComparator) { it.title }) // null
//sampleEnd
}
inline fun <R> ByteArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Byte) -> R): R?
inline fun <R> ShortArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Short) -> R): R?
inline fun <R> IntArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Int) -> R): R?
inline fun <R> LongArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Long) -> R): R?
inline fun <R> FloatArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Float) -> R): R?
inline fun <R> DoubleArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Double) -> R): R?
inline fun <R> BooleanArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Boolean) -> R): R?
inline fun <R> CharArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Char) -> R): R?
inline fun <R> UIntArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (UInt) -> R): R?
inline fun <R> ULongArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (ULong) -> R): R?
inline fun <R> UByteArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (UByte) -> R): R?
inline fun <R> UShortArray.maxOfWithOrNull(comparator: Comparator<in R>, selector: (UShort) -> R): R?
Возвращает наибольшее значение согласно указанному компаратору среди всех значений, полученных функцией селектор, применённой к каждому элементу массива, или null, если массив пуст.
Если несколько элементов дают максимальное значение, эта функция возвращает первое из них.
Примеры
import kotlin.math.*
import kotlin.test.*
fun main() {
//sampleStart
// A custom Comparator that orders numbers by their absolute values
val absComparator = compareBy<Int> { it.absoluteValue }
// The largest and smallest cubic values when compared by absolute value
val numbers = intArrayOf(-2, 3, -4, 1)
println(numbers.maxOfWith(absComparator) { it * it * it }) // -64
println(numbers.minOfWith(absComparator) { it * it * it }) // 1
val emptyArray = intArrayOf()
// maxOfWith() and minOfWith() throw if the array is empty
// emptyArray.maxOfWith(absComparator) { it * it * it } // will fail with NoSuchElementException
// emptyArray.minOfWith(absComparator) { it * it * it } // will fail with NoSuchElementException
// maxOfWithOrNull() and minOfWithOrNull() return null if the array is empty
println(emptyArray.maxOfWithOrNull(absComparator) { it * it * it }) // null
println(emptyArray.minOfWithOrNull(absComparator) { it * it * it }) // null
//sampleEnd
}
inline fun <T, R> Iterable<T>.maxOfWithOrNull(comparator: Comparator<in R>, selector: (T) -> R): R?
Возвращает наибольшее значение согласно указанному компаратору среди всех значений, полученных функцией селектор, применённой к каждому элементу коллекции, или null, если коллекция пуста.
Если несколько элементов дают максимальное значение, эта функция возвращает первое из них.
Примеры
import kotlin.math.*
import kotlin.test.*
fun main() {
//sampleStart
data class Book(val title: String, val publishYear: Int, val rating: Double)
// A custom Comparator that orders strings by their length
val lengthComparator = compareBy<String> { it.length }
// The longest and shortest book titles
val books = listOf(
Book("Red Sand", 2004, 3.5),
Book("Silver Bullet", 2009, 4.4),
Book("Clear Water", 2018, 4.1),
Book("Night Sky", 2023, 3.8)
)
println(books.maxOfWith(lengthComparator) { it.title }) // Silver Bullet
println(books.minOfWith(lengthComparator) { it.title }) // Red Sand
val emptyList = listOf<Book>()
// maxOfWith() and minOfWith() throw if the collection is empty
// emptyList.maxOfWith(lengthComparator) { it.title } // will fail with NoSuchElementException
// emptyList.minOfWith(lengthComparator) { it.title } // will fail with NoSuchElementException
// maxOfWithOrNull() and minOfWithOrNull() return null if the collection is empty
println(emptyList.maxOfWithOrNull(lengthComparator) { it.title }) // null
println(emptyList.minOfWithOrNull(lengthComparator) { it.title }) // null
//sampleEnd
}
inline fun <K, V, R> Map<out K, V>.maxOfWithOrNull(comparator: Comparator<in R>, selector: (Map.Entry<K, V>) -> R): R?
Возвращает наибольшее значение согласно указанному компаратору среди всех значений, полученных функцией селектор, применённой к каждой записи карты, или null, если карта пуста.
Если несколько записей дают максимальное значение, эта функция возвращает первую из них.
Примеры
import kotlin.math.*
import kotlin.test.*
fun main() {
//sampleStart
data class Book(val title: String, val publishYear: Int, val rating: Double)
// A custom Comparator that orders strings by their length
val lengthComparator = compareBy<String> { it.length }
// The longest and shortest book titles
val books = listOf(
Book("Red Sand", 2004, 3.5),
Book("Silver Bullet", 2009, 4.4),
Book("Clear Water", 2018, 4.1),
Book("Night Sky", 2023, 3.8)
)
println(books.maxOfWith(lengthComparator) { it.title }) // Silver Bullet
println(books.minOfWith(lengthComparator) { it.title }) // Red Sand
val emptyList = listOf<Book>()
// maxOfWith() and minOfWith() throw if the collection is empty
// emptyList.maxOfWith(lengthComparator) { it.title } // will fail with NoSuchElementException
// emptyList.minOfWith(lengthComparator) { it.title } // will fail with NoSuchElementException
// maxOfWithOrNull() and minOfWithOrNull() return null if the collection is empty
println(emptyList.maxOfWithOrNull(lengthComparator) { it.title }) // null
println(emptyList.minOfWithOrNull(lengthComparator) { it.title }) // null
//sampleEnd
}
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/max-of-with-or-null.html