zoukankan      html  css  js  c++  java
  • jdk7 中Collections.sort 异常

    Collections.sort 异常

    java.lang.IllegalArgumentException: Comparison method violates its general contract!
            at java.util.TimSort.mergeHi(TimSort.java:868)
            at java.util.TimSort.mergeAt(TimSort.java:485)
            at java.util.TimSort.mergeForceCollapse(TimSort.java:426)
            at java.util.TimSort.sort(TimSort.java:223)
            at java.util.TimSort.sort(TimSort.java:173)
            at java.util.Arrays.sort(Arrays.java:659)
            at java.util.Collections.sort(Collections.java:217)

    代码例如以下:

    Collections.sort(values, new Comparator<Map.Entry<String, Float>>() {    
    <span style="white-space:pre">	</span>public int compare(Map.Entry<String, Float> o1, Map.Entry<String, Float> o2) {  
    	<span style="white-space:pre">	</span>return (o2.getValue() > o1.getValue() ? 1 : -1);   
    	}   
    }); 


    是对一个Map数组进行排序,更新了jdk版本号后报以上异常,查询了先关资料后,改动了代码例如以下:

    Collections.sort(values, new Comparator<Map.Entry<String, Float>>() {    
    	public int compare(Map.Entry<String, Float> o1, Map.Entry<String, Float> o2) {  
    		return o2.getValue().compareTo(o1.getValue());
    	}   
    }); 

    异常解决,參考链接:

    http://stackoverflow.com/questions/10234038/compare-method-throw-exception-comparison-method-violates-its-general-contract





  • 相关阅读:
    电子商务概论【0351】
    数据库原理
    建筑结构CAD[0753]
    计算机图像处理基础[9124]
    计算机基础[1056]
    计算机组成原理【0013】
    C语言程序设计【0039】
    计算机基础1056
    专业英语[0089]
    double数据转换成char字符串的函数——dtostrf()用法
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3828459.html
Copyright © 2011-2022 走看看