Collections.sort(cells, new Comparator<MyCell>() {
@Override
public int compare(MyCell o1, MyCell o2) {
if (o1.getX() <= o2.getX() && o1.getY() <= o2.getY()) {
return -1;
} else {
return 1;
}
}
});
这里是完整的堆栈跟踪:
Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeHi(Unknown Source)
at java.util.TimSort.mergeAt(Unknown Source)
at java.util.TimSort.mergeCollapse(Unknown Source)
at java.util.TimSort.sort(Unknown Source)
at java.util.TimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
我知道有很多这样的问题,但我不明白为什么我的比较是错误的。getX() 和 getY() 返回一个 long。那么我该如何解决这个问题呢?
我已经搜索过了,但没有得到答案。
提前致谢。