В чем разница между sortedBy () и sortedWith (...)? - PullRequest
0 голосов
/ 16 июня 2020

Я не могу понять разницу между 2 sortedBy и sortedWith и когда использовать кого-либо из них. Пожалуйста, объясните.

1 Ответ

1 голос
/ 16 июня 2020

sortedBy принимает только функцию селектора, как указано в документации:

inline fun <T, R : Comparable<R>> Array<out T>.sortedBy(
    crossinline selector: (T) -> R?
): List<T>

Пример:

val myList: List<Int> = listOf(1,3,4,5,7,24,5)
print(myList.sortedBy {it}) // outputs [1, 3, 4, 5, 5, 7, 24]

В то время как sortedWith принимает компаратор:

fun <T> Sequence<T>.sortedWith(
    comparator: Comparator<in T>
): Sequence<T>

Пример:

val myList: List<Int> = listOf(1,3,4,5,7,24,5)
print(myList.sortedWith (Comparator<Int>{ a, b ->
    when {
        a > b -> 1
        a < b -> -1
        else -> 0
    }
}))

Это похоже на Comparable против Comparator в java

Надеюсь, это поможет !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...