2016-11-28 89 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:你沒有紐約伍德斯托克附近的農場,偶然嗎? –