我目前正在努力對Java進行排序。我收到錯誤消息「比較方法違反其總合同」。我也理解這個錯誤消息,但我(主要)使用類型爲Long的buildin compareTo-Method。所以我不知道,在這種情況下,排序方法仍然違反了合同。這裏是我的代碼:buildin compareTo:比較方法違反其總體合同
@Override
public int compareTo(DataAge another) {
if(this == null || another == null)
return 0;
Long a = new Long(this.getAge());
Long b = new Long(another.getAge());
return a.compareTo(b);
}
這裏的錯誤:
Java exception occurred:
java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.ComparableTimSort.mergeLo(Unknown Source)
at java.util.ComparableTimSort.mergeAt(Unknown Source)
at java.util.ComparableTimSort.mergeCollapse(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.ComparableTimSort.sort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at dd.GMAAnalyzer.sortData(Analyzer.java:158)
注:'這== null'永遠是假的。 –