阿里巴巴Java开发手册——Comparator
本文介绍了阿里巴巴Java开发手册——Comparator的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
上图是《阿里巴巴Java开发手册v1.2.0》中的说明,这里举了个反例,说没有处理相等的情况,但我想:
o1.getId() > o2.getId()
反过来不就是
o1.getId() <= o2.getId()
我平时都是这样用的,求大神在帮忙解释一下这个地方的技巧是什么?是什么原因?
解决方案
进一步了解了一下,问题的根本原因是JDK7的排序实现改为了TimSort,详细见这篇文章。
http://blog.2baxb.me/archives...
一开始回答的时候并没有完全理解作者问问题的意图,回答得有点草率,为此道个歉。
分割线下是之前回答的内容,因为答案评论里有和@wanghaa 就旧有答案的讨论,因此保留,也谢谢@wanghaa 让我意识到问题。
public static void main(String[] args) {
int i = 1;
int j = 1;
int ret = i > j ? 1 : -1;
System.out.println(ret);
}
上面的代码会输出-1,进行比较的两个取值相等的情况下应该返回0,返回-1肯定是不对的,所以一定要单独处理相等的情况。
这篇关于阿里巴巴Java开发手册——Comparator的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文