我对 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;
}
Run Code Online (Sandbox Code Playgroud)
更新
在收到一些友好的软件工程师的一些解释后,我了解到比较器定义了集合中元素的顺序。例如,当比较 a 和 b 时,如果比较器返回 -1,则 a 应放在列表中的 b 之前。
小智 5
要记住的关键一点是,如果比较返回正值 (>0),就会发生交换。否则不在排序算法期间。
例子:
4(a) 2(b) 6
对于升序:
a > b (4 > 2) 返回 1(交换需要在 a 和 b 之间进行,即放置 2 4 6)
对于降序排列:
a > b ( 2 > 4 ) 返回 -1(a 和 b 之间不需要交换,即位置 4 2 6,因为它已经按顺序排列)。
这个逻辑是在排序算法下实现的,所以,只要想想如果a和b已经按照你的预期排序,那么返回-1,否则返回1。
| 归档时间: |
|
| 查看次数: |
2158 次 |
| 最近记录: |