2011-02-03 3 views
7

guava를 사용하여 문자열 목록의 lexicographical ordering을 수행하는 간단한 방법은 무엇입니까?guava를 사용하는 문자열 목록의 사전 식 순서

List<String> s = newArrayList(
    "susen", "soumen", "dipak", "abhi", "zylo", 
    "zala", "gautam", "gautom", "shaswasti", "saswati"); 
List<char[]> ts = newArrayList(transform(s, new Function<String, char[]>() { 
    @Override 
     public char[] apply(String input) { 
      return input.toCharArray(); 
     } 
    })); 
Collections.sort(ts, Chars.lexicographicalComparator()); 
s = transform(ts, new Function<char[], String>() { 
    @Override 
    public String apply(char[] input) { 
     return String.valueOf(input); 
    } 
}); 
System.out.println(s); 
+2

이것은 잔인합니다. java.util 패키지의 Collections.sort를 사용하십시오. –

+0

예! 매우 정확하다. – gautamr

답변

7

문자열 Comparable를 구현하고, 그것의 자연적인 순서가 사전 식 순서입니다 : 나는 이런 식으로 않습니다. 당신이 자리에 일종의 싶지 않아, 당신은 구아바를 사용하려는 경우

List<String> s = ... 
Collections.sort(s); 
1

간단히 말하면 (String 구현 Comparable 이후)입니다 Ordering.

Ordering.natural().sortedCopy(yourInputThatIsIterableAndHasStrings); 

나 : 당신이 자리에 정렬 할 경우

Ordering.usingToString().sortedCopy(yourInputThatIsIterableThatYouWantToSortBasedOnToString); 

, 당신은 단지 Collections.sort(...)를 사용해야합니다.

희망이 도움이됩니다.

8

가, 체크 아웃 : 당신이해야 할 모든

Collections.sort(s); 
+0

'ImmutableList'를 얻기 위해'immutableSortedCopy'도있다. – Tom

관련 문제