Collections.sort 异常
java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.TimSort.mergeHi(TimSort.java:868)
at java.util.TimSort.mergeAt(TimSort.java:485)
at java.util.TimSort.mergeForceCollapse(TimSort.java:426)
at java.util.TimSort.sort(TimSort.java:223)
at java.util.TimSort.sort(TimSort.java:173)
at java.util.Arrays.sort(Arrays.java:659)
at java.util.Collections.sort(Collections.java:217)代码如下:
Collections.sort(values, new Comparator<Map.Entry<String, Float>>() {
<span style="white-space:pre"> </span>public int compare(Map.Entry<String, Float> o1, Map.Entry<String, Float> o2) {
<span style="white-space:pre"> </span>return (o2.getValue() > o1.getValue() ? 1 : -1);
}
});
Collections.sort(values, new Comparator<Map.Entry<String, Float>>() {
public int compare(Map.Entry<String, Float> o1, Map.Entry<String, Float> o2) {
return o2.getValue().compareTo(o1.getValue());
}
}); 异常解决,参考链接:
http://stackoverflow.com/questions/10234038/compare-method-throw-exception-comparison-method-violates-its-general-contract
本文解决了一个关于使用Collections.sort方法时出现的java.lang.IllegalArgumentException异常问题。通过对比较器Comparator的实现方式调整,成功解决了由违反通用契约导致的问题。
1404

被折叠的 条评论
为什么被折叠?



