Je veux trier ci-dessous la liste des chaînes selon les paramètres régionaux de l'utilisateur
List<String> words = Arrays.asList(
"Äbc", "äbc", "Àbc", "àbc", "Abc", "abc", "ABC"
);
Pour différents utilisateurs, la sortie de tri des paramètres régionaux doit être différente selon les paramètres régionaux.
Comment trier la liste ci-dessus selon les paramètres régionaux de l'utilisateur?
J'ai essayé
Collections.sort(words , String.CASE_INSENSITIVE_ORDER);
Mais cela ne fonctionne pas pour la localisation, alors comment passer le paramètre local à Collections.sort()
ou existe-t-il un autre moyen efficace?
Vous pouvez utiliser un tri avec un comparateur personnalisé. Voir interface Collator
Collator coll = Collator.getInstance(locale);
coll.setStrength(Collator.PRIMARY);
Collections.sort(words, coll);
Le collateur est un comparateur et peut être transmis directement à la méthode Collections.sort(...)
.
Je pense que c'est ce que vous devriez utiliser - Collator
La classe Collator effectue une comparaison de chaînes sensible aux paramètres régionaux. Vous utilisez cette classe pour créer des routines de recherche et de tri pour le texte en langage naturel.
Faites quelque chose comme suit dans votre comparateur -
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);
}
Et passez une instance du comparateur le Collections.sort
méthode.
Mise à jour
Comme @Jan Dvorak l'a dit, il s'agit en fait d'un comparateur, vous pouvez donc simplement créer son intance avec les paramètres régionaux souhaités, définir la force et lui transmettre la méthode de tri:
Collactor usCollator = Collator.getInstance(Locale.US); //Your locale here
usCollator.setStrength(Collator.PRIMARY); //desired strength
Collections.sort(yourList, usCollator);
List<MODEL> ulke = new ArrayList<MODEL>();
Collections.sort(ulke, new Comparator<MODEL>() {
Collator collator = Collator.getInstance(new Locale("tr-TR"));
@Override
public int compare(MODEL o1, MODEL o2) {
return collator.compare(o1.getULKEAD(), o2.getULKEAD());
}
});