Extensions for java.util.Comparator

reversed

fun <T> Comparator<T>.reversed(): Comparator<T>

Returns a comparator that imposes the reverse ordering of this comparator.

then

infix fun <T> Comparator<T>.then(
    comparator: Comparator<in T>
): Comparator<T>

Combines this comparator and the given comparator such that the latter is applied only when the former considered values equal.

thenBy

fun <T> Comparator<T>.thenBy(
    selector: (T) -> Comparable<*>?
): Comparator<T>

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.

fun <T, K> Comparator<T>.thenBy(
    comparator: Comparator<in K>,
    selector: (T) -> K
): Comparator<T>

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.

thenByDescending

fun <T> Comparator<T>.thenByDescending(
    selector: (T) -> Comparable<*>?
): Comparator<T>

Creates a descending comparator using the primary comparator and the function to transform value to a Comparable instance for comparison.

fun <T, K> Comparator<T>.thenByDescending(
    comparator: Comparator<in K>,
    selector: (T) -> K
): Comparator<T>

Creates a descending 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.

thenComparator

fun <T> Comparator<T>.thenComparator(
    comparison: (a: T, b: T) -> Int
): Comparator<T>

Creates a comparator using the primary comparator and function to calculate a result of comparison.

thenDescending

infix fun <T> Comparator<T>.thenDescending(
    comparator: Comparator<in T>
): Comparator<T>

Combines this comparator and the given comparator such that the latter is applied only when the former considered values equal.