java:java.text.Collator

Un article de Polydoc.

Sommaire

[modifier] Description

La classe Collator permet de comparer des chaînes de caractères en fonction de critères régionaux. Elle est très utile pour une langue comme le français puisqu'elle permet de comparer des chaînes de caractères sans tenir compte des accents. Elle permettra que « déçu » soit bien avant « demain » dans un tri par ordre alphabétique. Elle permettra également d'établir une équivalence entre « œ » et « oe ». La principale propriété d'une instance de Collator est son niveau de précision (strength) qui indique le degré de finesse à appliquer dans la comparaison entre les caractères. Il y a quatre niveaux de précision possibles. Le résultat de la comparaison suivant les niveaux de précision varie suivant l'instance de Collator en question et, en particulier, de la langue de référence. On peut cependant décrire les niveaux de précision de l'instance de Collator par défaut pour la langue française :

  1. Collator.PRIMARY : au premier niveau, la comparaison ignore accent et majuscules : « a » est différent de « b », « ê », « É » et « e » sont identiques, « œ » est équivalent à « oe »,
  2. Collator.SECONDARY : au second niveau, la comparaison n'ignore que les majuscules,
  3. Collator.TERTIARY : au troisième niveau, la comparaison n'ignore ni accent, ni majuscule, « œ » est différent à « oe », pour les caractères français, on obtient le même résultat qu'une comparaison directe entre les chaînes de caractères,
  4. Collator.IDENTICAL : comparaison à l'identique, pour le français, le résultat est équivalent au troisième niveau.

La comparaison entre deux chaînes se fait via la méthode compare(). Lorsqu'une chaîne risque d'être comparée souvent, il est possible de construire un objet CollationKey afin d'accélérer le traitement.

La classe Collator implémente l'interface Comparator, ce qui permet de l'utiliser pour comparer des clés dans une instance de Map, par exemple.

[modifier] Construction

La classe Collator est une classe abstraite. Le principal moyen d'obtenir une instance est la méthode statique getInstance(). L'objet renvoyé est une instance de la classe RuleBasedCollator. Pour le français, l'usage le plus courant est une instance avec le premier niveau de précision. Ce qui donne la construction suivante :

Collator collator = Collator.getInstance(Locale.FRENCH);
collator.setStrength(Collator.PRIMARY);

[modifier] Principales méthodes

[modifier] void setStrength(int newStrength)

Fixe le niveau de précision dans la comparaison des caractères

[modifier] int compare(String source,String target)

Compare deux chaînes de caractères

[modifier] CollationKey getCollationKey(String source)

Retourne une instance de CollationKey utile pour de multiples comparaisons.

[modifier] Voir aussi

[modifier] Liens internes