项目中用到了Collections.sort 排序,今突然出现崩溃了,报错Comparison method violates its general contract,一直好好的,奇了个怪。
又是一番google加百度。。。
我的compare实现如下
Collections.sort(resultList, newComparator() {
@Override
public int compare(LiveItemData lhs,LiveItemData rhs) {
return (int) (rhs.getPubTime()*1000-lhs.getPubTime()*1000);
}
});
其实在JDK1.7+中要求compare 必须返回 >=1,<=1 ,0 三种值,并且要求非常严格,JDK 1.6 貌似没有这个问题。
修改如下:
if(rhs.getPubTime()>lhs.getPubTime()){
return 1;
}
if(lhs.getPubTime()>rhs.getPubTime()){
return -1;
}
return0;
网友评论