thenBy
inline
fun
<
T
>
Comparator
<
T
>
.
thenBy
(
crossinline
selector
:
(
T
)
->
Comparable
<
*
>
?
)
:
Comparator
<
T
>
(source)
Creates a comparator comparing values after the primary comparator defined them equal. It uses the function to transform value to a Comparable instance for comparison.
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
}
inline
fun
<
T
,
K
>
Comparator
<
T
>
.
thenBy
(
comparator
:
Comparator
<
in
K
>
,
crossinline
selector
:
(
T
)
->
K
)
:
Comparator
<
T
>
(source)
Creates a comparator comparing values after the primary comparator defined them equal. It uses the selector function to transform values and then compares them with the given comparator .
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
}