compareByDescending

inline fun <T> compareByDescending(
    crossinline selector: (T) -> Comparable<*>?
): Comparator<T>
(source)

Creates a descending comparator using 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 sorted = list.sortedWith(compareByDescending { it.length })

println(sorted) // [aa, bb, b, a]
//sampleEnd
}
inline fun <T, K> compareByDescending(
    comparator: Comparator<in K>,
    crossinline selector: (T) -> K
): Comparator<T>
(source)

Creates a descending comparator using the selector function to transform values being compared and then applying the specified comparator to compare transformed values.

Note that an order of comparator is reversed by this wrapper.

import kotlin.test.*

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

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

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