【发布时间】:2019-03-01 20:19:09
【问题描述】:
学习 Kotlin,我试图了解 Java 的 Comparator 接口是如何工作的 - 主要是 compare() 函数,以便我可以使用它。
我已尝试阅读 compare() 的文档,但我希望对其工作原理进行更简单的解释。
在遍历列表时,compare(x, y) 中的 x 和 y 到底是什么?它在迭代时是否针对并比较每对数字?例如:
arrayOf(1, 2, 3, 4)
它会比较 1 和 2(x 和 y),然后是 2 和 3(x 和 y),然后是 3 和 4(x 和 y)吗?
我有一个 Kotlin 函数,它提供了一个比较器来按降序对列表进行排序:
import java.util.*
fun getList(): List<Int> {
val arrayList = arrayListOf(1, 5, 2)
Collections.sort(arrayList, object: Comparator<Int> {
override fun compare(x: Int, y: Int){
return x < y
}
} )
return arrayList
我不确定为什么上面的函数不是完成它的正确语法。
【问题讨论】:
-
...您展示的示例是 Java 的做法。你可能想看看
sortWith(结合compareBy)或sortBy。或者看看Kotlin collection ordering