使用番石榴的字符串列表的字典排序

时间:2011-02-03 11:21:39

标签: java collections guava

使用guava执行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);

3 个答案:

答案 0 :(得分:8)

如果您不想进行排序,并且想要使用番石榴,请查看Ordering

Ordering.natural().sortedCopy(yourInputThatIsIterableAndHasStrings);

或:

Ordering.usingToString().sortedCopy(yourInputThatIsIterableThatYouWantToSortBasedOnToString);

如果您想进行排序,那么您应该使用Collections.sort(...)

希望这有帮助。

答案 1 :(得分:7)

String实现Comparable,其自然顺序是字典顺序。 你所要做的就是

Collections.sort(s);

答案 2 :(得分:1)

简单地说(因为String实现Comparable):

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