java - 否定比较链

标签 java comparison guava

我写了类似的东西

@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/

相关文章:

lambda - Java 8 : More efficient way of comparing lists of different types?

java - 使用 MapMaker#makeComputingMap 防止同一数据同时发生 RPC

Java StringTokenizer 严格遵守五个空白字符,仅此而已

java - 你应该避免使用 Guavas Ordering.using ToString() 吗?

java - 在 Ruby : how to use the class 中导入 .jar 文件

java - 如何运行 JShell 文件?

swift - 我可以在几乎等于的基础上快速比较两个字节值吗

swift - 我有两个 UIViewControllers,我需要比较它们是否是 UIViewController 的同一个子类

java - XQUERY JAVA 不工作

java - 二维数组的深度优先搜索