屬性排序報錯:java.lang.IllegalArgumentException: Comparison method violates its general contract!


對一個集合里的對象按照某屬性排序時,遇到問題:

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

后面查了資料后發現,jdk1.6和jdk1.7的排序算法有所更改,具體的可以自己去研究,解決辦法:JDK1.7的實現compare方法必須有一個返回0的情況,即必須判斷兩對象屬性是否相等(千萬別漏掉屬性為null和空字符串等特殊情況的比較!!!),相等必須返回0,不然就報這錯(jdk1.7強制,編譯雖然不報錯,但是運行會報錯,jdk1.6不要求)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM