Вам необходимо сравнить фактические значения double/float
, если вы хотите, чтобы десятичные разряды влияли на вашу сортировку, т.е. избегайте 74,5> 74,9.Кроме того, поскольку вы хотите, чтобы сортировка происходила по убыванию, вы можете попробовать использовать Double.compare()
:
Collections.sort(announceList, new Comparator<Announce>() {
@Override
public int compare(Announce o1, Announce o2) {
return Double.compare(o2.getMatchPercentage(), o1.getMatchPercentage());
}
});
Если вы используете Java 8 или выше, вы также можете сделать:
announceList.sort(Comparator.comparingDouble(Announce::getMatchPercentage).reversed());
Вот небольшой пример использования простых двойных чисел:
public static void main(String[] args) {
List<Double> list = new ArrayList<Double>();
list.add(20.10);
list.add(20.54);
list.add(27.50);
list.add(76.36);
System.out.println("Before sort:");
for(Double d : list) {
System.out.println(d);
}
System.out.println();
Collections.sort(list, new Comparator<Double>() {
@Override
public int compare(Double o1, Double o2) {
return Double.compare(o2, o1);
}
});
System.out.println("After sort:");
for(Double d : list) {
System.out.println(d);
}
}
Вывод:
Before sort:
20.1
20.54
27.5
76.36
After sort:
76.36
27.5
20.54
20.1