在JDK7版本以上,Comparator要知足自反性,傳遞性,對稱性,否則Arrays.sort,Collections.sort會報IllegalArgumentException異常。ide
說明:code
1) 自反性:x,y的比較結果和y,x的比較結果相反。get
2) 傳遞性:x>y,y>z,則x>z。io
3) 對稱性:x=y,則x,z比較結果和y,z比較結果相同。異常
反例:下例中沒有處理相等的狀況,實際使用中可能會出現異常:
sort
new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { return o1.getId() > o2.getId() ? 1 : -1; } }