2012-02-16 3 views
3

私はアルバムクラスを持っていると言います。どのように私はcompareToメソッドをコーディングします私はアルバムオブジェクトのArrayListのがいると私は2つの文字列を使用してcompareToと並べ替えをオーバーライドします

Collections.sort()

呼び出すときように、昇順で歌手によってタイトルのフォローによってそれらをソートします。

Public class Album implements Comparable{ 

private String title; 
private String singer; 
private double price; 

..... 

public int compareTo(){ 

// How to 

} 

} 

答えて

3
public class Album implements Comparable<Album> { 
    ... 
    public int compareTo(Album other) { 
    int cmp = title.compareTo(other.title); 
    if (cmp == 0) { 
     cmp = singer.compareTo(other.singer); 
    } 
    return cmp; 
    } 
} 
5

私は個人的に

public int compareTo(Album other) { 
    int primary = title.compareTo(other.title); 
    return primary != 0 ? primary 
         : singer.compareTo(other.singer); 
} 

のようにそれを記述しますが、私はそれがアルバム「自然順序付け」を持っているかどうか議論の余地だと思います。たとえば、将来、評価や年にアルバムを並べ替える場合を考えてみましょう。

私があなただったら私はおそらく、この目的のためにComparator作成します。

class TitleSingerComparator implements Comparator<Album> { 
    public int compare(Album a, Album b) { 
     int primary = a.title.compareTo(b.title); 
     return primary != 0 ? primary 
          : a.singer.compareTo(b.singer); 
    } 
} 

をし、あなたのarguementが合理的と思われる

Collections.sort(albums, new TitleSingerComparator()); 
+0

を使用してコレクションを並べ替えます。しかし、この質問のためにルイの答えは私が探しているものです。あなたに投票してください! – root

関連する問題