2011-02-03 31 views
7

kullanarak dize listesini kullanarak guava kullanarak dize listesini lexicographical ordering yapmanın basit yolu nedir.Sözlük listesini 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

Bu çok fazla. Sadece java.util paketinde Collections.sort kullanın –

+0

evet! Çok doğru – gautamr

cevap

7

Dize Karşılaştırılabilir uygular ve doğal düzen lexicographical sırasıdır: Ben bu şekilde yapmak. Eğer bir yerde sıralama istemiyoruz ve guava kullanmak istiyorsanız

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

Basitçe (String uygular Comparable beri) olduğunu Ordering.

Ordering.natural().sortedCopy(yourInputThatIsIterableAndHasStrings); 

ya: yerinde sıralamak isterseniz

Ordering.usingToString().sortedCopy(yourInputThatIsIterableThatYouWantToSortBasedOnToString); 

, o zaman sadece Collections.sort(...) kullanmalıdır.

Bu yardımcı olur umarım.

8

göz atın: yapmanız gereken tek şey

Collections.sort(s); 
+0

da bir "ImmutableList" almak için immutableSortedCopy' vardır. – Tom