2011-02-03 3 views
7

что такое простой способ сделать lexicographical ordering списка строк с использованием guava. я сделать это таким образом:лексикографическое упорядочение списка строк с использованием 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

Это перебор. Просто используйте Collections.sort в пакете java.util –

+0

да! очень правильно – gautamr

ответ

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(...).

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

+0

есть 'immutableSortedCopy', чтобы получить' ImmutableList'. – Tom

Смежные вопросы