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

gau*_*amr 7 java collections 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);
Run Code Online (Sandbox Code Playgroud)

Tom*_*Tom 8

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

Ordering.natural().sortedCopy(yourInputThatIsIterableAndHasStrings);
Run Code Online (Sandbox Code Playgroud)

要么:

Ordering.usingToString().sortedCopy(yourInputThatIsIterableThatYouWantToSortBasedOnToString);
Run Code Online (Sandbox Code Playgroud)

如果你想在适当的位置排序,那么你应该使用Collections.sort(...).

希望这可以帮助.


JB *_*zet 7

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

Collections.sort(s);
Run Code Online (Sandbox Code Playgroud)