java.lang.IllegalArgumentException: Comparison method violates its general contract!的解決方法
阿新 • • 發佈:2019-01-22
上午在敲程式碼時,對一個List集合進行排序,程式碼如下:
Collections.sort(list2,new Comparator<Integer>()
{
@Override
public int compare(Integer o1, Integer o2)
{
if(o2>o1)
{
return 1;
}
return -1;
}
});
執行報錯:Exception in thread "main" 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.mergeCollapse(TimSort.java:408)
at java.util.TimSort.sort(TimSort.java:214)
at java.util.TimSort.sort(TimSort.java:173)
at java.util.Arrays.sort(Arrays.java:659)
at java.util.Collections.sort(Collections.java:217)
at app.controllers.Test.main(Test.java:43)
貌似在JDK7下出的錯,具體原因沒深究,直接改下程式碼如下解決:
Collections.sort(list2,new Comparator<Integer>()
{
@Override
public int compare(Integer o1, Integer o2)
{
return o2-o1;
}
});