2016-11-28 18 views
1

私は映画の評価を比較するクラスを持っています。下図のようにそれは、コンパレータクラスを実装しています:あなたが見ることができるように戻り値比較器のdoubleを使用した比較メソッド?

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

を行います:[Javaでの整数の除算](// stackoverflow.com/q/7220681) 'average'上を計算し、格納するかもしれない有益 – Tom

+0

創造 –

答えて

4

シンプルに、あなたのために仕事をしてください。 *「平均は常に整数ではないかもしれません」*

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

まあ...私はばかです。ありがとう!! – yasgur99

+0

@ yasgur99:いいえ、あなたはAPIに精通していませんが、それは変化しています。 –

+0

@ yasgur99:あなたは偶然、NYのウッドストックに近い農場を所有していませんか? –