Maîtriser la méthode Java String compareTo() : Syntaxe, cas d'usage et exemples pratiques
Qu'est-ce que compareTo() en Java ?
La méthode compareTo() compare deux chaînes lexicographiquement. Chaque caractère est converti en sa valeur Unicode, et la méthode retourne un int indiquant l'ordre relatif. Si les chaînes sont identiques, elle retourne 0 ; sinon, le résultat est négatif si la première chaîne précède la seconde, ou positive si elle la suit.
Cette méthode est définie dans l'interface java.lang.Comparable.
Syntaxe
public int compareTo(String str)
Paramètre : str – la chaîne à comparer avec la chaîne appelante.
Valeur de retour : Un int qui est négatif, zéro ou positif selon l'ordre lexicographique.
< 0– la chaîne appelante est lexicographiquement première.== 0– les deux chaînes sont égales.> 0– la chaîne argument est lexicographiquement première.
Exemple 1 : Utilisation basique
public class SampleString {
public static void main(String[] args) {
String str = "a";
System.out.println("Compare \"a\" to \"b\": " + str.compareTo("b"));
str = "b";
System.out.println("Compare \"b\" to \"a\": " + str.compareTo("a"));
str = "b";
System.out.println("Compare \"b\" to \"b\": " + str.compareTo("b"));
}
}
Sortie
- Compare "a" to "b": -1
- Compare "b" to "a": 1
- Compare "b" to "b": 0
Explication :
- « a » vient avant « b » alphabétiquement, donc le résultat est négatif.
- « b » vient après « a », produisant un résultat positif.
- Chaînes identiques donnent zéro.
Exemple 2 : Sensible à la casse vs insensible à la casse
public class SampleString {
public static void main(String[] args) {
String str = "RockStar";
System.out.println("Case-sensitive compare to \"rockstar\": " + str.compareTo("rockstar"));
System.out.println("Case-insensitive compare to \"ROCKSTAR\": " + str.compareToIgnoreCase("ROCKSTAR"));
}
}
Sortie
- Case-sensitive compare to "rockstar": -32
- Case-insensitive compare to "ROCKSTAR": 0
Quand utiliser compareTo()
Utilisez compareTo() quand vous avez besoin de l'ordre naturel (lexical) des chaînes, comme trier une liste de noms ou effectuer des recherches dans un dictionnaire. La méthode suit les mêmes règles que String.compareToIgnoreCase() mais respecte la casse.
Scénarios typiques incluent :
- Tri de collections d'objets
StringavecCollections.sort(). - Implémentation de
Comparabledans des classes personnalisées nécessitant une comparaison de chaînes. - Recherche binaire sur des tableaux de chaînes triés.
Exemple 3 : Comparaison pratique
public class CompareDemo {
public static void main(String[] args) {
String s1 = "Guru1";
String s2 = "Guru2";
System.out.println("String 1: " + s1);
System.out.println("String 2: " + s2);
int result = s1.compareTo(s2);
if (result < 0) {
System.out.println("\"" + s1 + "\" est lexicographiquement avant \"" + s2 + "\"");
} else if (result == 0) {
System.out.println("\"" + s1 + "\" est lexicographiquement égal à \"" + s2 + "\"");
} else {
System.out.println("\"" + s1 + "\" est lexicographiquement après \"" + s2 + "\"");
}
}
}
Sortie
- String 1: Guru1
- String 2: Guru2
- "Guru1" est lexicographiquement avant "Guru2"
Java
- Méthode Java String length() : Comment obtenir la taille d'une chaîne (Exemple)
- Maîtriser Java String.indexOf() : Localiser des sous-chaînes et exemples pratiques
- Comprendre Java String.charAt() : Syntaxe, type de retour, exceptions et exemple pratique
- Méthode Java String.contains() : Comment vérifier la présence de sous-chaînes – Exemples pratiques
- Maîtriser Java String.endsWith() : Comment vérifier les suffixes de chaînes avec exemples
- Maîtriser le remplacement de chaînes Java : replace(), replaceAll() et replaceFirst() expliqués
- Lecture de Fichiers en Java avec BufferedReader – Guide Pratique avec Exemples
- Convertir un char en String en Java - Exemples pratiques et bonnes pratiques
- Inverser une chaîne en Java par récursivité - Guide étape par étape