实现比较器来比较两个对象

时间:2013-06-26 11:32:15

标签: java hibernate

我想实现比较object1和object2的Comparator,其中这两个对象是复杂对象(嵌套对象)。

我的要求是,如果object2中有任何空值,并且object1中的对应值为null或非null,则我的比较器应该返回true但是如果object2中的值不为null且对象1中的curresponding值不同或为null它应该返回false。

这些值可能是对象内部的对象,也可能是基础对象的对象。

你能否建议我如何实现compareTo()方法,以便得到我想要的结果。

1 个答案:

答案 0 :(得分:1)

compareTo方法不返回true或false 比较器通常工作: 如果第一个给定对象小于第二个给定对象,则返回-1 如果第一个给定对象大于第二个给定对象,则返回1 如果对象是偶数

,则返回0

会是这样的(考虑到你想根据其中的字符串比较两个对象):

if (a.getString() == null && a.getString() == null) {
        return 0;    //both of them are null: return  equal
    }
    if (a.getString() == null) {
        return 1;    //first one is null: second is bigger
    }
    if (b.getString() == null) {
        return -1;   //second one is null: first is bigger
    }
    return a.getString().compareTo(b.getString()); //compare the two strings 
                                                   //inside, with the already 
                                                   //existing method from the 
                                                   //String class

考虑到您没有提供任何代码示例,此代码将符合您的需求