2011-02-02 5 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

난 당신이 "구현"Comparable, "오버라이드"아니라고 생각합니다. –

+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); 
    } 
} 
관련 문제