zoukankan      html  css  js  c++  java
  • Comparison method violates its general contract 解决

    java.lang.IllegalArgumentException: Comparison method violates its general contract!

    原因

    JDK7中的Collections.Sort方法实现中,如果两个值是相等的,那么compare方法需要返回0,否则 可能 会在排序时抛错,而JDK6是没有这个限制的。

    在 JDK7 版本以上,Comparator 要满足自反性,传递性,对称性,不然 Arrays.sort,

    Collections.sort 会报 IllegalArgumentException 异常。

    说明:

    1) 自反性:x,y 的比较结果和 y,x 的比较结果相反。

    2) 传递性:x>y,y>z,则 x>z。

    3) 对称性:x=y,则 x,z 比较结果和 y,z 比较结果相同。

    改一下系统设置,还是选择使用老版本的排序方法,在代码前面加上这么一句话:System.setProperty("java.util.Arrays.useLegacyMergeSort", "true");或者 -Djava.util.Arrays.useLegacyMergeSort=true 

  • 相关阅读:
    mysql安装停在make[3]: Leaving directory `/mysql5.xx/mysqltest' 解决方法
    搞了个burst
    PKU2074
    PKU2029
    ACM/ICPC要求的知识点(转)
    PKU3264线段树解法
    PKU2036
    PKU1151线段树解法
    今天递了辞呈
    hamachi
  • 原文地址:https://www.cnblogs.com/interdrp/p/8990816.html
Copyright © 2011-2022 走看看