Trier une liste de chaînes de caractères en Java

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.