2011-02-02 13 views
0

コンパレータを使用してJavaで配列をソートする例と出力を教えてください。 public static void sort(List list, Comparator c);を使用する必要があることがわかりますが、コンパレータはソート順をどのように変更しますか?Javaでコレクションを並べ替える

+2

スタートこれを読んで::あなたの代わりに、ここでComparatorを使用する必要がある場合でも、完全な例であるhttp://download.oracle.com/javase/1.4.2/docs/api/java /util/Comparator.html –

+1

現在のAPIのバージョンへのリンクは次のとおりです。http://download.oracle.com/javase/6/docs/api/java/util/Comparator.html – jzd

答えて

4

通常、Comparableを実装して、リストをsort()メソッドに渡すだけです。

public static void main(String args[]) { 
    List<ExampleItem> examples = new LinkedList<ExampleItem>(); 
    //Build List 
    Collections.sort(examples, new ExampleCompartor());//Sort with your comparator 
} 

//Custom Class to sort 
class ExampleItem{ 
    private int data; 
} 

//Compartor 
static class ExampleCompartor implements Comparator<ExampleItem>{ 
    @Override 
    public int compare(ExampleItem ex1, ExampleItem ex2) { 
     return ex1.data - ex2.data; 
    } 
} 
+1

+1 Comparableを提案しています。 –

+0

私はそれを "オーバーライド"ではなく、 "インプリメント"することを意味すると思います。 –

+0

@Stephen、素敵なキャッチ、私は答えを編集しました。 – jzd

2
public class CompSample { 
    public static int countVowels(String s) { 
     return s.replaceAll("[^aeiouAEIOU]", "").length(); 
    } 

    public static class NumberOfVowelsComparator implements Comparator<String> { 
     public int compare(String o1, String o2) { 
      int o1vowels = countVowels(o1); 
      int o2vowels = countVowels(o2); 

      return o2vowels - o1vowels; 
     } 
    } 

    public static void main(String[] args) { 
     String[] words = {"one", "two", "tree", "four"}; 
     List<String> sortedWords = Collections.sort(Arrays.asList(words), 
      new NumberOfVowelsComparator()); 
     System.out.println(sortedWords); 
    } 
} 
関連する問題