Java教程

java.lang.IllegalArgumentException: Comparison method violates its general contract 异常

本文主要是介绍java.lang.IllegalArgumentException: Comparison method violates its general contract 异常,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

使用Comparator比较大小时,结果要return 0; return 1; return -1;

分别表示等于、大于、小于

 

   项目中这样操作,导致了异常:java.lang.IllegalArgumentException: Comparison method violates its general contract  

BigDecimal value1 = new BigDecimal(sb1.toString());
BigDecimal value2 =  new BigDecimal(sb2.toString());
return  value1.subtract(value2).intValue();
修改如下:
if(value1.compareTo(value2) == -1){
    return -1;
}

if(value1.compareTo(value2) == 0){
    return 0;
}

if(value1.compareTo(value2) == 1){
    return 1;
}

具体原因的话是因为1.7的新算法抛的异常,这里有详细解释: http://www.cnblogs.com/JAYIT/p/6170426.html

这篇关于java.lang.IllegalArgumentException: Comparison method violates its general contract 异常的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!