我写了类似的东西
@Override public int compareTo(Cuboid that) {
return -ComparisonChain.start()
.compare(this.d0, that.d0)
.compare(this.d1, that.d1)
.compare(this.d2, that.d2)
.result();
}
为了颠倒顺序,我简单地否定了结果,但现在我看到文档说的是错误的
Ends this comparison chain and returns its result: a value having the same sign as the first nonzero comparison result in the chain, or zero if every result was zero.
因此 Integer.MIN_VALUE
是允许的返回值,然后求反失败。在源代码中,我可以看到只返回 -1、0 和 +1,但这不是我想要依赖的东西。
我可以交换所有操作数而不是否定。简单而丑陋,但我很好奇是否有更好的解决方案。
最佳答案
一个可能比反转compare
参数更清楚的选择是将每对参数与其自然顺序的相反顺序进行比较:
.compare(this.d0, that.d0, Ordering.natural().reverse())
关于java - 否定比较链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374467/