比较Java中对象的更优雅方式

时间:2015-07-22 11:27:55

标签: java guava apache-commons

Java有一个接口Comparator<T>,它有一个方法int compare(T o1, T o2)

编辑:

我错了:

  

如果第一个对象小于,则返回的整数必须为-1   第二个,1,如果第二个小于第一个,0,如果他们是#{1}}   相等。

文档状态:

  

作为第一个参数的负整数,零或正整数   小于,等于或大于第二个。

所以我改写一下我的问题: 是否有更优雅的方法来比较对象,而不是要记住comparator.compare(o1, o2) < 0实际上意味着第一个对象少于第二个对象?

2 个答案:

答案 0 :(得分:5)

比较你的陈述

  

如果第一个对象小于第二个对象,则返回的整数必须为-1;如果第二个对象小于第一个对象,则返回1;如果它们相等,则返回0。

官方声明

  

当第一个参数小于,等于或大于第二个参数时,返回负整数,零或正整数。

并注意唯一合适的常数为零。

答案 1 :(得分:-1)

比较方法的官方接口合同是:

  

返回负整数,零或正整数作为第一个   参数小于,等于或大于第二个。

虽然实际上你只需要三个值,但这个逻辑可以用来写出这样的优雅代码:

public int compare(MyObject o1, MyObject o2){
    return o1.getIntValue() - o2.getIntValue();
}

在一行中不仅可以为您提供哪个对象更大(或相等),它甚至可以为您提供一个比另一个更大的对象。

(不考虑整数溢出。)