2016-11-28 94 views
1

所以我有一堂课来比较一部电影的评分。它实现了比较器类,如下所示:返回比较器的比较方法使用双?

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

+0

*“平均可能并不总是一个整数” *:(// stackoverflow.com/q/7220681) – Tom

+0

也许有利于计算和存储'average'上[Java中整数的除法]创造 –

回答

4

简单,让双为你做的工作。做

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

呃...我很愚蠢。谢谢!! – yasgur99

+0

@ yasgur99:不,你只是不太熟悉这个API,但这是在变化。 –

+0

@ yasgur99:你没有纽约伍德斯托克附近的农场,偶然吗? –