poblacion mundi mapa manila idioma filipinas español continente capital java sorting collections localization locale

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