【发布时间】:2021-07-08 22:52:35
【问题描述】:
我对 Java 中的比较器和 Collections.sort() 感到非常困惑。 我不明白比较器引起的顺序。我不清楚比较函数应该返回哪个数字来获取排序方向。我也不知道 Collections 将如何使用该比较结果对输入数据进行排序。我应该背诵它们吗?有什么更容易理解的吗?任何人都可以为我解释一下吗?谢谢。
public int compare(Obj a, Obj b){
if(a.age > b.age) return 1;
if(a.age < b.age) return -1;
else return 0;
}
更新
在从一些友好的软件工程师那里得到一些解释后,我了解到比较器定义了集合中元素的顺序。例如,当比较 a 和 b 时,如果比较器返回 -1,那么在列表中 a 应该放在 b 之前。
【问题讨论】:
-
我的助记词是:return
a.age - b.age,将a和b在减法中的顺序与在参数列表中的顺序相同,那么它将给出正确的排序结果递增顺序。如果age是一个int,其值从0 到140,这是正确的。由于int上溢和下溢,对于任意int值是不正确的,但我的助记符在所有情况下都能很好地确定何时返回负值以及何时返回正值(它们不必是1 和- 1).
标签: java comparator