6

我有一个具有多个字段的 ComplexObject,我想说:

  • 如果x两者都存在字段,则转到compare比较链中的下一个。
  • 如果两者都为空,则转到compare比较链中的下一个。
  • 如果一个为空而另一个不为空,则将空值放在最后

我不知道该怎么做,因为据我所知

.compare(c1.getX(), c2.getX(), Ordering.arbitrary().nullsLast())

将要

  1. 如果对象都存在且相等,则认为它们相等
  2. 如果它们都为空,则认为对象相等。

有没有办法可以使用番石榴ComparisonChainOrdering类来实现我想要的?或者有没有更好的方法来考虑解决这个问题?

4

1 回答 1

9

鉴于您对我的评论的回答,只需进行布尔比较即可。

.compare(c1.getX() == null, c2.getX() == null)

并给出您修改后的答复,如果您的班级有方法

public XType getX() {...}

然后考虑制作XType工具Comparable<XType>或提供Comparator<XType>.

于 2013-06-18T22:15:50.620 回答