欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Comparison method violates its general contract!

程序员文章站 2022-03-27 09:36:29
...

本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/42012365,转载请注明。(但是 这个 玩意 为啥 我点进去 不是原作者 ,,,)
今天 遇到了一个问题 比较器问题
报了一个 Comparison method violates its general contract!
然后查了一下 发现 是DK7底层的排序算法换了,而且 jdk7没有兼容6. 可怕
发到这 记录一下

    public int compareTo(AlbumIncomeVO o) {
//        int i = o.getNum() - this.getNum();//倒序,大的放前面
//        if(i == 0){
//            return 1;
//        }
//        return i;
        return o.getNum().compareTo(this.getNum());
    }

  Collections.sort(incomeAlbums);

这就是 代码 ,, 注释的 是会报错的 下面的是解决得

或者是
可以在JVM的启动参数中加入如下参数:

-Djava.util.Arrays.useLegacyMergeSort=true

这样就会照旧使用JDK6的排序算法,在不能修改代码的情况下,解决这个兼容的问题。(但是 我没有试过)