Согласно docs существует два метода сортировки: sort
, который вы вызываете, который sort(List<T> list)
ожидает, что вы реализуете Comparable
not Comparator
, он сортирует элементы в естественном порядке, вызывая compareTo()
метод, если они происходят из библиотеки, например, класса String
. Сортировка, которую вы вызываете, не может найти этот метод, потому что у вас есть compare()
not compareTo()
Тот, который принимает Comparator
, это sort(List<T> list, Comparator<? super T> c)
, в вашем случае вы можете использовать его как Collections.sort(list,this)
вместо Collections.sort(list)
, если вы хотите использовать Comparator
, только в противном случае вы можете реализовать Comparable
и переопределить compareTo
, и это не похоже на то, что он не будет принимать Profiles
список, он будет принимать любой, он просто должен реализовать правильный интерфейс
Я предлагаю сделать это, как показано ниже, в этом случае вам не нужно реализовывать какой-либо интерфейс В java 8 или выше
Collections.sort(list,(profiles,t1) -> Float.compare(profiles.getDistance,t1.getDistance())
или ниже java 8
Collections.sort(list,new Comparator()<Profiles>{
@Override
public int compare(Profiles profiles,Profiles t1){
return Float.compare(profiles.getDistance,t1.getDistance);
});
хорошего дня Умайр Икбал