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.

Since Kotlin

1.1

Samples

import kotlin.test.*

fun main() { 
   //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.

Since Kotlin

1.1

Samples

import kotlin.test.*

fun main() { 
   //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
}
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.

Since Kotlin

1.0

Samples

import kotlin.test.*

fun main() { 
   //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.

Since Kotlin

1.0

Samples

import kotlin.test.*

fun main() { 
   //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
}