compare By
Начиная с Kotlin: 1.0
fun <T> compareBy(vararg selectors: (T) -> Comparable<*>?): Comparator<T>
Создает компаратор, используя последовательность функций для вычисления результата сравнения. Функции вызываются последовательно, получают заданные значения a и b и возвращают объекты Comparable. Как только экземпляры Comparable, возвращенные функцией для значений a и b, оказываются не равны при сравнении, результат этого сравнения возвращается из Comparator.
Примеры
import kotlin.test.*
fun main() {
//sampleStart
val list = listOf("aa", "b", "bb", "a")
val sorted = list.sortedWith(compareBy(
{ it.length },
{ it }
))
println(sorted) // [a, b, aa, bb]
//sampleEnd
}
inline fun <T> compareBy(crossinline selector: (T) -> Comparable<*>?): Comparator<T>
Создает компаратор, используя функцию для преобразования значения в экземпляр Comparable для сравнения.
Примеры
import kotlin.test.*
fun main() {
//sampleStart
val list = listOf("aa", "b", "bb", "a")
val sorted = list.sortedWith(compareBy { it.length })
println(sorted) // [b, a, aa, bb]
//sampleEnd
}
inline fun <T, K> compareBy(comparator: Comparator<in K>, crossinline selector: (T) -> K): Comparator<T>
Создает компаратор, используя функцию селектор для преобразования сравниваемых значений, а затем применяя указанный компаратор для сравнения преобразованных значений.
Примеры
import kotlin.test.*
fun main() {
//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–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.comparisons/compare-by.html