Articles

Ordre lexicographique

Posted on

Votre navigateur ne supporte pas le canevas HTML 5. Essayez Chrome.

Pour mettre des éléments en ordre, il faut pouvoir comparer deux éléments. Avec les chaînes de caractères, l’ordre habituel est l’ordre lexicographique. C’est l’ordre du dictionnaire, sauf que toutes les lettres majuscules précèdent toutes les lettres minuscules. Cet ordre est celui qu’utilise la méthode compareTo() de la classe String.

Deux chaînes de caractères sont lexicographiquement égales si elles ont la même longueur et contiennent les mêmes caractères aux mêmes positions. Dans ce cas, stringA.compareTo( stringB ) renvoie 0.

Sinon, stringA.compareTo( stringB ) renvoie une valeur négative si StringA vient en premier et une valeur positive si StringB vient en premier.

Aide-mémoire : imaginez que les chaînes de caractères d’un dictionnaire sont classées de la plus petite à la plus grande. Alors stringA - stringB produirait une valeur négative si stringA venait avant StringB.

Pour déterminer quelle chaîne vient en premier, il faut comparer les caractères correspondants des deux chaînes de gauche à droite. Le premier caractère où les deux chaînes diffèrent détermine la chaîne qui vient en premier. Les caractères sont comparés en utilisant le jeu de caractères Unicode. Toutes les lettres majuscules viennent avant les lettres minuscules. Si deux lettres sont de la même casse, alors l’ordre alphabétique est utilisé pour les comparer.

Si deux chaînes de caractères contiennent les mêmes caractères aux mêmes positions, alors la chaîne la plus courte vient en premier.


.

Relation stringA.compareTo( stringB )
stringA Moins que stringB Entier négatif
stringA Égal stringB Zéro
stringA Grandi Than stringB Entier positif


Expression Evalue à Explication
« Zebra ».compareTo(« ant ») Entier négatif Casse supérieure ‘Z’ vient avant la casse inférieure ‘a’
« Apple ».compareTo(« apple ») Entier négatif Casse supérieure ‘A’ vient avant la casse inférieure ‘a’
« apple ».compareTo(« orange ») Entier négatif ‘a’ vient avant ‘o’ « érable ».compareTo(« matin ») Entier négatif ‘a’ vient avant ‘o’
« pomme ».compareTo(« apple ») Zéro même longueur, mêmes caractères dans les mêmes positions
« orange ».compareTo(« apple ») Entier positif « o » vient après « a » « applecart ».compareTo(« apple ») Entier positif La chaîne la plus longue « applecart » vient après « apple » « albatross ».compareTo(« albany ») Entier positif ‘t’ vient après ‘n’


Ceci est légèrement déroutant. Remarquez que stringA.compareTo( stringB ) renvoie un nombre entier négatif lorsque stringA et stringB sont dans le bon ordre.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *