【发布时间】:2017-05-11 07:05:57
【问题描述】:
我有这个代码,用于排序值的比较器:
public static Comparator<Partikel> getFFsorted() {
Comparator comp = new Comparator<Partikel>() {
@Override
public int compare(Partikel s1, Partikel s2) {
if(s1.ff>s2.ff)
{
return 1;
}
else
{
return -1;
}
}
};
return comp;
}
但我有这样的错误:
线程“主”java.lang.IllegalArgumentException 中的异常: 比较方法违反了它的总合同!在 java.util.TimSort.mergeHi(TimSort.java:868)
在 java.util.TimSort.mergeAt(TimSort.java:485)
在 java.util.TimSort.mergeCollapse(TimSort.java:410)
在 java.util.TimSort.sort(TimSort.java:214)
在 java.util.TimSort.sort(TimSort.java:173)
在 java.util.Arrays.sort(Arrays.java:659)
在 java.util.Collections.sort(Collections.java:217)
我该如何解决?
【问题讨论】:
-
“比较方法违反了它的一般约定!”当你read what that contract is,并将它与你的代码进行比较时,你什么都没有发现?
标签: java sorting collections