我想实现比较object1和object2的Comparator,其中这两个对象是复杂对象(嵌套对象)。
我的要求是,如果object2中有任何空值,并且object1中的对应值为null或非null,则我的比较器应该返回true但是如果object2中的值不为null且对象1中的curresponding值不同或为null它应该返回false。
这些值可能是对象内部的对象,也可能是基础对象的对象。
你能否建议我如何实现compareTo()方法,以便得到我想要的结果。
答案 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
考虑到您没有提供任何代码示例,此代码将符合您的需求