Tri alphabétique d'un TreeMap dont les clés sont des String
Bonjour,
j'ai un TreeMap contenant des String en tant que clés. Par défaut l'ordre de tri naturel est 0-9, A-Z, a-z, àçéêè, etc...
Je voudrais trier ce TreeMap par ordre alphabétique "français", comme dans un dictionnaire basique, à savoir : 0-9, a|A|à, B|b, c|ç|C|Ç, etc.
(le "|" signifie 'ou')
ce qui donne pour exemple avec les clés suivantes :
- 5246
- à
- Ambre
- arbre
- Baobab
- bus
- Butte
- Ça
- ça
- carte
etc.
En gros un tri insensible à la casse et aux accents.
Je sais que l'on peut passer un Comparator au constructeur du TreeMap mais je ne pense pas qu'il faille redéfinir le compareTo de la classe String en fonction de tous les caractères accentués ?
J'ai vu aussi que la méthode compare() de la classe Collator pourrait m'être utile mais je ne vois pas comment lier le TreeMap et le Collator.
Donc voilà, si quelqu'un à n'importe quelle piste je suis preneur :D
Merci d'avance et a+
Re: Tri alphabétique d'un TreeMap contenant des String
Salut,
Citation:
Envoyé par Djakisback
J'ai vu aussi que la méthode compare() de la classe Collator pourrait m'être utile mais je ne vois pas comment lier le TreeMap et le Collator.
Collator implémente Comparator, tu peux donc l'utiliser dans le constructeur de ta TreeMap. Ainsi ceci permet de trier selon les règles d'usages en français :
Code:
Map m = new TreeMap(Collator.getInstance(Locale.FRENCH));
Et tu peux faire simplement ceci si tu veux trier selon la locale de l'utilisateur :
Code:
Map m = new TreeMap(Collator.getInstance());
Enfin si ces règles ne te conviennent pas tu peux définir les tiennes via la classe RuleBasedCollator...
a++