
Trier une liste de chaînes de caractères en Java
Trier une liste de chaînes de caractères en Java est très simple : la classe java.util.Collections dispose de la méthode static sort.
Par contre, il ne faut pas oublier que le tri dépend de la langue.
Considérons la liste de caractères suivante :
List<String> list = new ArrayList<String>();
list.add("a");
list.add("z");
list.add("\u00E0"); // à
list.add("\u00E9"); // ä
list.add("\u00E5"); // å
list.add("\u00E6"); // æ
list.add("\u00E4"); // é
list.add("\u00F8"); // ö
list.add("\u00F6"); // ø
Utilisation de la méthode sort
Si on effectue le tri comme suit
Collections.sort(list);
On obtient le résultat suivant :
a z à ä å æ é ö ø
Tous les caractères spéciaux sont situés après la lettre z.
Or, cet ordre n’est pas correct si l’on souhaite trier selon l’ordre de la langue danoise.
Solution
Pour pouvoir utiliser la langue correcte, il faut considérer la classe java.text.Collator qui permet de tenir compte de la locale.
Pour effectuer le tri en Danois, le code devient alors
Locale locale = new Locale("da", "DK");
Collections.sort(list, Collator.getInstance(locale));
On obtient le résultat suivant
a à é z æ ä ø ö å
On remarque que le tri n’est pas effectué de la même façon.
Finalement, pour une application multilingue, effectuer un tri n’est pas si trivial.