Spec-Zone.ru › Kotlin 2

minOfWithOrNull

kotlin-stdlib/kotlin.collections/minOfWithOrNull

Начиная с Kotlin: 1.4

inline fun <T, R> Array<out T>.minOfWithOrNull(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.minOfWithOrNull(comparator: Comparator<in R>, selector: (Byte) -> R): R?
inline fun <R> ShortArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Short) -> R): R?
inline fun <R> IntArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Int) -> R): R?
inline fun <R> LongArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Long) -> R): R?
inline fun <R> FloatArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Float) -> R): R?
inline fun <R> DoubleArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Double) -> R): R?
inline fun <R> BooleanArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Boolean) -> R): R?
inline fun <R> CharArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (Char) -> R): R?
@ExperimentalUnsignedTypes
inline fun <R> UIntArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (UInt) -> R): R?
@ExperimentalUnsignedTypes
inline fun <R> ULongArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (ULong) -> R): R?
@ExperimentalUnsignedTypes
inline fun <R> UByteArray.minOfWithOrNull(comparator: Comparator<in R>, selector: (UByte) -> R): R?
@ExperimentalUnsignedTypes
inline fun <R> UShortArray.minOfWithOrNull(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>.minOfWithOrNull(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>.minOfWithOrNull(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/min-of-with-or-null.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API