2010-07-04 3 views
2

I는 문자열 []의 ArrayList를 가지고정렬은 []

의 ArrayList를 < 문자열 []> = mystuff에 새로운 ArrayList를 < 문자열 [] "();

가장 큰 배열 크기 오름차순으로 정렬하려고합니다. 예 :

하여 mystuff = {[ "이", "항목", "하나", "이다"], [ "이", "이다", "항목", "2", [ "항목"] [ "항목", "세"]}

이 될해야 :

mystuff에 = {[ "항목"] [ "항목" "세"], [ "this", "is", "item", "one"], [ "this", "is", "item", "two"]}

길이가 동일한 배열의 경우 순서는 중요하지 않습니다.

편집 :

자바 컴파일러 버전 : javac의 1.6.0_20

오류 나는 sepp2k의 코드 @ 를 사용하여 직면하고있다 : A를 http://pastie.org/private/ienpdtj0ft6czw6nboeva

+1

난 아직도 당신이 컴파일하려는 코드를 볼 필요가 : 여기 (올바른 결과를 및 표시) 컴파일하고 오류없이 실행되는 완전한 클래스입니다. 표현식이 구문 적으로 유효하지 않은 곳 (예 : 메서드 정의 외부)에서 호출을 호출하는 것처럼 보입니다. – sepp2k

+1

어딘가에 구두점이 누락 된 것처럼 보입니다. – casablanca

+0

필자는 클래스 선언에 코드를 넣었으나 가져 오기 직후 3 개의 오류로 잘라 냈습니다. http://pastie.org/1029778 – curiousgeorge

답변

12

사용 Collections.sort 길이를 비교하는 Comparator.

Collections.sort(mystuff, new Comparator<String[]>() { 
    public int compare(String[] x, String[] y) { 
     if(x.length < y.length) { 
      return -1; 
     } else if(x.length == y.length) { 
      return 0; 
     } else { 
      return 1; 
     } 
    } 
}); 

편집 :

import java.util.*; 

public class Bla {       
    public static void main(String[] args) { 
     // Create list 
     List<String[]> mystuff = new ArrayList<String[]>(); 
     mystuff.add(new String[] {"lilu", "lolo"}); 
     mystuff.add(new String[] {"lala"}); 
     mystuff.add(new String[] {"lila", "blabla", "pfirsichkuchen"}); 

     // Sort list 
     Collections.sort(mystuff, new Comparator<String[]>() { 
      public int compare(String[] x, String[] y) { 
       if(x.length < y.length) { 
        return -1; 
       } else if(x.length == y.length) { 
        return 0; 
       } else { 
        return 1; 
       } 
      } 
     }); 

     // Output list 
     for(String[] strs : mystuff) { 
      System.out.println(Arrays.toString(strs)); 
     } 
    } 
} 
+0

Yikes, 제 컴파일러는 많은 오류를 던집니다. 그 이유는 내가 가져 오기 때문입니다 : import java.util. *; – curiousgeorge

+0

@ khan0 : java.util. *을 가져 오기 때문이 아닙니다. 괜찮아. 오류 및 오류 메시지의 원인이되는 전체 코드를 보려면 질문을 편집하십시오. 그리고 자바 버전. – sepp2k

+1

음 ... (잠재적으로)'compareTo' 메서드를 사용할 수 있도록 두 개의'Integer' 인스턴스를 만드는 것은 약간의 낭비입니다. –

관련 문제