2011-02-03 71 views
7

使用番石榴字符串列表的lexicographical ordering的简单方法是什么? 我做这种方式:使用番石榴的字符串列表的字典排序

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包 – 2011-02-03 11:40:32

+0

yes!非常正确 – gautamr 2011-02-03 12:06:48

回答

7

字符串实现媲美,而且它的自然顺序是字典顺序。 所有你需要做的就是

Collections.sort(s); 
1

简单地说(因为String工具Comparable):

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

如果不到位排序想要的,你想用番石榴,退房Ordering

Ordering.natural().sortedCopy(yourInputThatIsIterableAndHasStrings); 

或:

Ordering.usingToString().sortedCopy(yourInputThatIsIterableThatYouWantToSortBasedOnToString); 

如果你想在地方进行排序,那么你应该只使用Collections.sort(...)

希望这会有所帮助。