лексикографическое упорядочение списка строк с использованием гуавы - PullRequest
7 голосов
/ 03 февраля 2011

каков простой способ лексикографического упорядочения списка строк с использованием гуавы. Я делаю это так:

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 ]

8 голосов
/ 03 февраля 2011

Если вы не хотите сортировать по месту и хотите использовать гуаву, проверьте Ordering.

Ordering.natural().sortedCopy(yourInputThatIsIterableAndHasStrings);

или

Ordering.usingToString().sortedCopy(yourInputThatIsIterableThatYouWantToSortBasedOnToString);

Если вы хотите отсортировать по месту, тогда вам нужно просто использовать Collections.sort(...).

Надеюсь, это поможет.

7 голосов
/ 03 февраля 2011

String реализует Comparable, и его естественный порядок - это лексикографический порядок. Все, что вам нужно сделать, это

Collections.sort(s);
1 голос
/ 03 февраля 2011

Проще говоря (поскольку String реализует Comparable):

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