Я пытаюсь отсортировать объект List < > , и я получаю это исключение (только для больших списков)
код сортировки:
List<FinalSentence> sentenceList = finalRepresentation.getSentences();
Collections.sort(sentenceList); // <=== EXCEPTION THROWN HERE!!!
Заголовок класса FinalSentence:
public class FinalSentence implements Comparable<FinalSentence>{...}
compareTo():
@Override
public int compareTo(FinalSentence o) {
if (this == o) {
return 0;
}
if (this.score > o.score) {
return 1;
}
if (this.score < o.score) {
return -1;
}
return 0;
}
это исключение:
Exception in thread "main" java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.util.ComparableTimSort.mergeHi(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 feature.finalRepresentation.Summarizer.summarize(Summarizer.java:30)
at driver.Driver.main(Driver.java:114)
для небольшого списка (менее 50 элементов) он работает. для большого списка (он должен работать с теми же), он выдает это исключение. Тип экземпляра List - это ArrayList, но не важно.
Я понятия не имею, как это понять. Список заполнен, элементы одного типа (там нет полиморфизма), и все же я получаю это странное исключение для больших списков.
Любые идеи?
Спасибо!