java - "Comparison method violates its general contract!"但我只比较两个长值?

标签 java android collections

我有以下比较功能:

    @Override
    public int compareTo(OptimizedMatch another) {
        long c = this.compareTime - another.compareTime;
        if(c>0){
            return 1;
        } else if(c<0){
            return -1;
        }
        return 0;
    }

而compareTime是这样计算的

this.compareTime = this.dateStamp + (LENGTH_OF_DAY - (this.dateTimeStamp - this.dateStamp));

为什么我会收到此错误?!我正在比较两个长值,这不应该是标准的吗?

编辑:我发现了错误,这是我的 IDE (Eclipse) 有问题。清理我的项目并重新启动后,它就可以工作了。

最佳答案

您的 equals() 方法可能有问题。

也不是

this.dateStamp + (LENGTH_OF_DAY - (this.dateTimeStamp - this.dateStamp))

相当于

2*this.dateStamp + LENGTH_OF_DAY - this.dateTimeStamp

我不知道这些字段的作用,但看起来这不是您想要做的。

关于java - "Comparison method violates its general contract!"但我只比较两个长值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20305820/

相关文章:

android - 应用程序意外停止 : Fatal Exception: MAIN

android - 有人可以解释混淆中的 DashO 概念吗?

java - 更好的数据结构,可以更快地读取 Map of Map of Map of Lists

scala - 如何跳过在 map Scala 中附加一些条件?

java - 如何爬上 TypeMirror 对象的层次结构树?

java - Android 运行时 : FATAL exception java. lang.NullPointerException

Android studio RecyclerView onCreateViewHolder 布局膨胀好慢

java - 如何同步两个方法

java - 初始化数据库以在 Spring Data R2DBC 上进行测试

java - 如何查明是否选中了多个复选框