2011-06-19 10 views
7

Actual Estoy utilizando los siguientes 2 códigos en 2 lugares diferentes para crear una lista ordenada e inmutable.Clasificación insensible a mayúsculas/minúsculas con Google Guava

return Ordering.natural().immutableSortedCopy(iterable); 

y

return Ordering.usingToString().immutableSortedCopy(machines); 

Sin embargo, esto hace que el caso 'pedido' sensibles.

¿Cómo utilizo la guayaba apis para hacer una caja insensible lista inmutable ordenada?

Respuesta

15

Creo que necesitará usar el método from con el comparador String.CASE_INSENSITIVE_ORDER, así.

return Ordering.from(String.CASE_INSENSITIVE_ORDER).immutableSortedCopy(iterable); 
+0

bien esto parece funcionar cuando se utiliza Ordering.natural, sin embargo tengo otro lugar donde uso Ordering.usingToString(). ImmutableSortedCopy(), ¿cómo va a trabajar en este caso? – pdeva

+2

'from' toma cualquier comparador. En el caso de 'toString' necesitaría crear su propio comparador y hacer algo como' toString(). ToLowerCase() 'antes de comparar. ¡Aclamaciones! –

+6

Para el reemplazo 'usingToString()', yo redactaría su 'Ordering' con' Functions.toStringFunction() ', p. 'return Ordering.from (String.CASE_INSENSITIVE_ORDER) .onResultOf (Functions.toStringFunction()). inmutableSortedCopy (iterable);' –

Cuestiones relacionadas