上午在敲代码时,对一个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;
}
});