В настоящее время я боюсь сортировать коллекцию на Java. Я получаю сообщение об ошибке «Метод сравнения нарушает его Общий контракт». Я также понимаю это сообщение об ошибке, но я (в основном) использую buildin compareTo-Method типа Long. Поэтому я не знаю, и в этом случае метод сортировки по-прежнему нарушает контракт. Вот мой код: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' всегда ложно. –