Java有一个接口Comparator<T>
,它有一个方法int compare(T o1, T o2)
。
编辑:
我错了:
如果第一个对象小于,则返回的整数必须为
-1
第二个,1
,如果第二个小于第一个,0
,如果他们是#{1}} 相等。
文档状态:
作为第一个参数的负整数,零或正整数 小于,等于或大于第二个。
所以我改写一下我的问题:
是否有更优雅的方法来比较对象,而不是要记住comparator.compare(o1, o2) < 0
实际上意味着第一个对象少于第二个对象?
答案 0 :(得分:5)
比较你的陈述
如果第一个对象小于第二个对象,则返回的整数必须为-1;如果第二个对象小于第一个对象,则返回1;如果它们相等,则返回0。
官方声明
当第一个参数小于,等于或大于第二个参数时,返回负整数,零或正整数。
并注意唯一合适的常数为零。
答案 1 :(得分:-1)
比较方法的官方接口合同是:
返回负整数,零或正整数作为第一个 参数小于,等于或大于第二个。
虽然实际上你只需要三个值,但这个逻辑可以用来写出这样的优雅代码:
public int compare(MyObject o1, MyObject o2){
return o1.getIntValue() - o2.getIntValue();
}
在一行中不仅可以为您提供哪个对象更大(或相等),它甚至可以为您提供一个比另一个更大的对象。
(不考虑整数溢出。)