2011-02-03 32 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を実装し、その自然な順序が辞書式順序です。 あなたがしなければならない(StringComparableを実装しているので)簡単に言えば

Collections.sort(s); 
1

です:

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

あなたが場所でソートしたくない、とあなたはグアバを使用したい、チェックアウトした場合Ordering

Ordering.natural().sortedCopy(yourInputThatIsIterableAndHasStrings); 

か:

Ordering.usingToString().sortedCopy(yourInputThatIsIterableThatYouWantToSortBasedOnToString); 

あなたが場所でソートしたい場合は、あなただけのCollections.sort(...)を使用する必要があります。

これが役に立ちます。

+0

'ImmutableList'を取得する' immutableSortedCopy'もあります。 – Tom

関連する問題