2011-02-03 16 views
7

cuál es la manera más simple de hacer lexicographical ordering de lista de cuerdas con guayaba. lo hago de esta manera:ordenamiento lexicográfico de la lista de cuerdas usando guayaba

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

Esto es exagerado. Simplemente use Collections.sort en el paquete java.util –

+0

¡sí! muy correcto – gautamr

Respuesta

7

cadena implementa Comparable, y su orden natural es el orden lexicográfico. Todo lo que tiene que hacer es

Collections.sort(s); 
1

En pocas palabras (ya String implementos Comparable):

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

Si no desea ordenar en su lugar, y que le gustaría utilizar guayaba, echa un vistazo Ordering.

Ordering.natural().sortedCopy(yourInputThatIsIterableAndHasStrings); 

o:

Ordering.usingToString().sortedCopy(yourInputThatIsIterableThatYouWantToSortBasedOnToString); 

Si desea ordenar en su lugar, a continuación, sólo debe utilizar Collections.sort(...).

Espero que esto ayude.

+0

también hay 'inmutableSortedCopy' para obtener una' ImmutableList'. – Tom

Cuestiones relacionadas