Я обновляемом один проект из JDK 7, JDK 8, где первоначально мы встречаем исключение:Collection.sort не сортировать должным образом в JDK 8 после реализации useLegacyMergesort истинного
java.lang.IllegalArgumentException: метод сравнения нарушает его общий договор ! в java.util.TimSort.mergeHi (Unknown Source) в java.util.TimSort.mergeAt (Unknown Source) в java.util.TimSort.mergeCollapse (Unknown Source) в java.util.TimSort.sort (Неизвестно Источник) на java.util.Arrays.sort (Unknown Source) в java.util.ArrayList.sort (Unknown Source) в java.util.Collections.sort (Unknown Source)
что мы решили с использованием Системных свойств java.util.Arrays.useLegacyMergeSort как true. После чего исключение было разрешено, но сортировка, выполняющая его, неверна (неправильная сортировка).
Примечание: В JDK 7 же кода работают отлично (без этой системы свойств)
public class SortTableModelRowComparator implements Comparator<TableModelSortingRow>
{
private boolean ascending = true;
protected int[] sortingColumns;
/**
* Constructor
*
*/
public SortTableModelRowComparator(boolean pSortAscendending, int[] pSortingColumns)
{
ascending=pSortAscendending;
sortingColumns=pSortingColumns;
}
@Override
public int compare(TableModelSortingRow o1,
TableModelSortingRow o2) {
BigDecimal firstvalue=(BigDecimal)o1.getValue(7);
BigDecimal secondvalue=(BigDecimal)o2.getValue(7);
return firstvalue.compareTo(secondvalue);
}
}
Мы не знаем ни того типа, который вы сортируете, ни каких экземпляров, ни того, что сравнивается r вы используете для сортировки. –
Добавлен класс компаратора. Не могли бы вы предложить что-то. – Bhanu
Что делает 'getValue (7)' do? –