返回比较器的比较方法使用双?
所以我有一堂课来比较一部电影的评分。它实现了比较器类,如下所示:返回比较器的比较方法使用双?
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时,我遇到了问题。对比较的方法,是相同的,但我需要显示一个区别。这可能吗?
简单,让双为你做的工作。做
return Double.compare(average1, average2); // or swap if desired
呃...我很愚蠢。谢谢!! – yasgur99
@ yasgur99:不,你只是不太熟悉这个API,但这是在变化。 –
@ yasgur99:你没有纽约伍德斯托克附近的农场,偶然吗? –
*“平均可能并不总是一个整数” *:(// stackoverflow.com/q/7220681) – Tom
也许有利于计算和存储'average'上[Java中整数的除法]创造 –