Spec-Zone.ru › Kotlin 1.7

compareBy

kotlin-stdlib / kotlin.comparisons / compareBy
Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)
fun <T> compareBy(
    vararg selectors: (T) -> Comparable<*>?
): Comparator<T>

Создаёт компаратор, используя последовательность функций для вычисления результата сравнения. Функции вызываются последовательно, принимают заданные значения a и b и возвращают объекты Comparable. Как только объекты Comparable, возвращённые функцией для a и b значений, не сравниваются как равные, результат этого сравнения возвращается компаратором Comparator.

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
val list = listOf("aa", "b", "bb", "a")

val sorted = list.sortedWith(compareBy(
    { it.length },
    { it }
))

println(sorted) // [a, b, aa, bb]
//sampleEnd
}
Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)
inline fun <T> compareBy(
    crossinline selector: (T) -> Comparable<*>?
): Comparator<T>

Создаёт компаратор, используя функцию для преобразования значения в объект Comparable для сравнения.

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
val list = listOf("aa", "b", "bb", "a")

val sorted = list.sortedWith(compareBy { it.length })

println(sorted) // [b, a, aa, bb]
//sampleEnd
}
Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)
inline fun <T, K> compareBy(
    comparator: Comparator<in K>, 
    crossinline selector: (T) -> K
): Comparator<T>

Создаёт компаратор, используя функцию selector для преобразования сравниваемых значений, а затем применяет указанный компаратор для сравнения преобразованных значений.

import kotlin.test.*

fun main(args: Array<String>) {
//sampleStart
val list = listOf('B', 'a', 'A', 'b')

val sorted = list.sortedWith(
    compareBy(String.CASE_INSENSITIVE_ORDER) { v -> v.toString() }
)

println(sorted) // [a, A, B, b]
//sampleEnd
}

© 2010–2020 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.comparisons/compare-by.html

Spec-Zone.ru

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