Два варианта кода – первый работает почти всегда корректно, второй всегда:
RATING {
Comparator comparator = new Comparator() {
public int compare(UserInfo o1, UserInfo o2) {
return (int)(o2.rating-o1.rating);
}
};
@Override
public Comparator comparator() {
return comparator;
}
},
RATING {
Comparator comparator = new Comparator() {
public int compare(UserInfo o1, UserInfo o2) {
return new Float(o2.rating).compareTo(o1.rating);
}
};
@Override
public Comparator comparator() {
return comparator;
}
},
Разница проявляется только на значениях близких к нулю – (int)(0-0.4) всегда дает 0 в результате, а для компаратора это означает равенство значений.