因此,我有一个班级来比较电影的评分。它实现了比较器类,如下所示:
public class FilmComparator implements Comparator<Film> {
private Map<Film, List<Rating>> ratings;
public FilmComparator(Map<Film, List<Rating>> ratings) {
this.ratings = ratings;
}
@Override
public int compare(Film o1, Film o2) {
double average1 = average(o1);
double average2 = average(o2);
return average2 - average1; // I cant do this because it need to return an int
}
private double average(Film f) {
int sum = 0;
for (Rating r : ratings.get(f)) {
sum += r.getValue();
}
return sum / ratings.get(f).size();
}
}
如您所见,平均值可能并不总是整数。我想知道如何才能进行更准确的比较。例如,当一个对象的平均值返回3.6而另一个对象的平均值返回3.0时,我遇到了问题。对于比较方法,两者相同,但是我需要显示出区别。这可能吗?
最佳答案
简单,让Double为您完成工作。做
return Double.compare(average1, average2); // or swap if desired