thenBy
Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)
inline fun <T> Comparator<T>.thenBy( crossinline selector: (T) -> Comparable<*>? ): Comparator<T>
Создаёт компаратор, сравнивающий значения после того, как первичный компаратор определил их равными. Он использует функцию для преобразования значения в экземпляр Comparable для сравнения.
import kotlin.test.*
fun main(args: Array<String>) {
//sampleStart
val list = listOf("aa", "b", "bb", "a")
val lengthComparator = compareBy<String> { it.length }
println(list.sortedWith(lengthComparator)) // [b, a, aa, bb]
val lengthThenString = lengthComparator.thenBy { it }
println(list.sortedWith(lengthThenString)) // [a, b, aa, bb]
//sampleEnd
}
Требования к платформе и версии: JVM (1.0), JS (1.0), Native (1.0)
inline fun <T, K> Comparator<T>.thenBy( comparator: Comparator<in K>, crossinline selector: (T) -> K ): Comparator<T>
Создаёт компаратор, сравнивающий значения после того, как первичный компаратор определил их равными. Он использует функцию selector для преобразования значений, а затем сравнивает их с заданным компаратором.
import kotlin.test.*
fun main(args: Array<String>) {
//sampleStart
val list = listOf("A", "aa", "b", "bb", "a")
val lengthComparator = compareBy<String> { it.length }
println(list.sortedWith(lengthComparator)) // [A, b, a, aa, bb]
val lengthThenCaseInsensitive = lengthComparator
.thenBy(String.CASE_INSENSITIVE_ORDER) { it }
println(list.sortedWith(lengthThenCaseInsensitive)) // [A, a, b, aa, bb]
//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/then-by.html