Если ваш метод getAlcohol()
возвращает удвоение, вы не должны приводить его к int
, это приведет к потере точности. Кроме того, вы можете автоматически сравнивать двойные числа вместо того, чтобы делать это самостоятельно, например:
Arrays.sort(t, new Comparator<AlcoholDrink>() {
// here I try sorting the elements by their alcohol value
@Override
public int compare(AlcoholDrink o1, AlcoholDrink o2) {
return o1.getAlcohol().compareTo(o2.getAlcohol());
}
});
Вы также можете заставить свой класс Alcohol
реализовать интерфейс Comparable
, как показано в примере в этом .
Наконец, если вы хотите придерживаться своего собственного кода, вы можете рассмотреть возможность изменения значения, возвращаемого методом сравнения, следующим образом:
@Override
public int compare(AlcoholDrink o1, AlcoholDrink o2) {
int at1 = (int)o1.getAlcohol(); // get the alcohol value
int at2 = (int)o2.getAlcohol(); // get the alcohol value
if(at1>at2)
return -1;
else if(at1<at2 )
return 1;
return 0;
}
Сейчас я не могу проверить код, но вы можете сортировать массив по возрастанию.