使用double返回Comparator的比较方法?

时间:2016-11-28 02:02:43

标签: java compare

所以我有一节比较电影的评分。它实现了比较器类,如下所示:

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时,我遇到了问题。比较方法,是相同的,但我需要显示一个区别。这可能吗?

1 个答案:

答案 0 :(得分:4)

简单,让Double为您完成工作。做

return Double.compare(average1, average2); // or swap if desired