我有以下比较功能:
@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/