Comparison method violates its g

2017-08-01  本文已影响0人  天晴雨依旧

       项目中用到了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;

上一篇 下一篇

猜你喜欢

热点阅读