java - mundi - filipinas poblacion
Ordenar lista de cadenas con localización (2)
Creo que esto es lo que deberías estar usando - Collator
La clase Collator realiza la comparación de String sensible a la configuración regional. Utiliza esta clase para crear rutinas de búsqueda y ordenamiento para texto en lenguaje natural.
Haga algo de la siguiente manera en su comparador:
public int compare(String arg1, Sting arg2) {
Collator usCollator = Collator.getInstance(Locale.US); //Your locale here
usCollator.setStrength(Collator.PRIMARY);
return usCollator.compare(arg1, arg2);
}
Y pase una instancia del comparador el método Collections.sort
.
Actualizar
Como dijo @Jan Dvorak, en realidad es un comparador, por lo que puedes crear su integridad con la configuración regional deseada, establecer la fuerza y pasarle el método de clasificación:
Collactor usCollator = Collator.getInstance(Locale.US); //Your locale here
usCollator.setStrength(Collator.PRIMARY); //desired strength
Collections.sort(yourList, usCollator);
Quiero ordenar debajo de la lista de cadenas según la configuración regional del usuario
List<String> words = Arrays.asList(
"Äbc", "äbc", "Àbc", "àbc", "Abc", "abc", "ABC"
);
Para una configuración de usuario diferente, la salida de clasificación debe ser diferente según la configuración regional.
¿Cómo ordenar la lista anterior según la configuración regional del usuario?
Lo intenté
Collections.sort(words , String.CASE_INSENSITIVE_ORDER);
Pero esto no funciona para la localización, entonces, ¿cómo pasar el parámetro local a Collections.sort()
o hay alguna otra manera eficiente?
Puede usar un ordenamiento con un Comparador personalizado. Ver la interfaz Collator
Collator coll = Collator.getInstance(locale);
coll.setStrength(Collator.PRIMARY);
Collections.sort(words, coll);
El clasificador es un comparador y se puede pasar directamente al método Collections.sort(...)
.