Comment comparer deux chaînes dans Java
⚡ Résumé intelligent
Comparaison de deux chaînes de caractères dans Java Plusieurs méthodes permettent de comparer une séquence de caractères afin de déterminer son égalité ou son ordre. Cette ressource explique sept approches, notamment les méthodes `equals` pour les chaînes de caractères et les objets, `compareTo`, les méthodes `StringUtils`, l'opérateur `==` et une méthode de comparaison personnalisée, chacune illustrée par des exemples.

Méthodes pour comparer des chaînes dans Java
Java fournit différentes méthodes que vous pouvez exploiter pour comparer deux chaînes dans Java. Comparaison de chaînes dans Java est une fonctionnalité qui fait correspondre une séquence de caractères à une chaîne.
Pour apprendre à comparer des chaînes dans Java, vous pouvez utiliser les méthodes fournies par les classes suivantes :
- Classe String du package java.lang.
- Classe Objects du package java.util.
- Classe StringUtils du package org.apache.commons.lang3.
La plupart de ceux-ci Java Les méthodes de comparaison de chaînes de caractères permettent de s'affranchir de la casse. Ce tutoriel vous présentera les différentes méthodes disponibles pour comparer deux chaînes de caractères.
Méthode 1 : méthode String equals()
Le Java Chaîne méthode equals() compare deux objets chaîne pour des valeurs de chaîne égales.
syntaxe:
public boolean equals(Object anObject)
Paramètres de la méthode equals() :
anObject – La chaîne d'argument pour comparer les chaînes.
types de retour de la méthode equals()
- Renvoie vrai si la chaîne littérale fournie est la même que la première chaîne.
- Renvoie false si la première chaîne n'est pas la même que la chaîne d'argument.
Exemple :
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree));
}
}
Production attendue:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Explication:
- Vous avez obtenu false dans la dernière sortie car l'objet spécifié a une casse différente.
À noter: Utilisez la méthode `equals()` pour comparer des chaînes de caractères en tenant compte de la casse. Utilisez la méthode `equalsIgnoreCase` pour comparer des chaînes de caractères sans tenir compte de la casse.
Méthode 2 : méthode Objets égaux()
Le Java Objets égaux() La méthode compare deux objets chaîne pour déterminer s’ils ont les mêmes valeurs.
syntaxe:
public static boolean equals(Object a, Object b)
Paramètres de la méthode equals()
a – Chaîne d’argument pour le premier objet chaîne.
b – Chaîne d’argument pour le deuxième objet chaîne.
types de retour de la méthode equals()
- Renvoie vrai si les littéraux de chaîne sont égaux. Passer une valeur nulle dans les deux arguments renverra également vrai.
- Renvoie false si les littéraux de chaîne ne sont pas égaux.
Exemple :
import java.util.Objects; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo)); String stringThree = null; String stringFour = null; System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour)); } }
Sortie :
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Explication:
Cet exemple montre que le résultat est une valeur booléenne « vrai », puisque les chaînes comparées sont égales.
Méthode 3 : méthode String compareTo()
Le Java Chaîne comparerTo() La méthode compare deux chaînes par ordre alphabétique. On parle généralement d’ordre lexicographique.
syntaxe:
public int compareTo(String str)
Paramètres de la méthode compareTo()
str – La chaîne à comparer à la chaîne actuelle.
La méthode compareTo() renvoie
- 0 – Renvoie zéro si l'objet spécifié est égal à la chaîne actuelle.
- < 0 – Renvoie un nombre inférieur à zéro si cette chaîne est inférieure à l'objet spécifié.
- > 0 – Renvoie un nombre supérieur à zéro si cette chaîne dépasse la chaîne fournie.
Exemple :
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo));
String stringThree = "GURU99";
// u = 117, U = 85, result = 117-85 = 32
System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree));
}
}
Production attendue:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Explication:
Le premier résultat renvoie la valeur zéro, puisque les première et deuxième chaînes de caractères sont égales.
Le deuxième résultat renvoie la valeur trente-deux, puisque les caractères sont différents.
À noter: Pour ignorer la casse, vous pouvez utiliser la méthode « compareToIgnoreCase ».
Méthode 4 : méthode StringUtils equals()
Le Java StringUtils est égal à() La méthode compare l’égalité de deux séquences de caractères.
Assurez-vous d'avoir ajouté la bibliothèque « org.apache.commons.lang3 » à votre programme. Cela vous permettra de comparer des chaînes de caractères à l'aide des méthodes StringUtils.
Pour les projets Maven, utilisez ceci guide pour ajouter la bibliothèque au projet.
Toutefois, si vous souhaitez ajouter la bibliothèque sans aucun outil de compilation, utilisez ceci. guide.
syntaxe:
public static boolean equals(CharSequence cs1, CharSequence cs2)
Paramètres de la méthode StringUtils equals()
- cs1 – Une séquence de caractères pour le premier argument.
- cs2 – Une séquence de caractères pour le deuxième argument.
La méthode StringUtils equals() renvoie
- Renvoie vrai si les chaînes de caractères comparées sont égales. Cela fonctionne également si vous passez une valeur nulle en arguments.
- Renvoie false si la comparaison de chaînes n'est pas égale.
Exemple :
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String stringTwo = "Guru99"; System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo)); String stringThree = "GURU99"; System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree)); } }
Sortie :
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Explication:
Puisque les contenus de la première et de la deuxième chaîne sont égaux, le résultat renvoie vrai.
Vous pouvez utiliser la méthode « equalsIgnoreCase » pour ignorer la casse.
Méthode 5 : méthode StringUtils equalsAny()
Le Java StringUtils est égal à Any() La méthode vérifie si une chaîne existe dans les arguments.
syntaxe:
public static boolean equalsAny(CharSequence string, CharSequence... searchStrings)
Paramètres de la méthode StringUtils equalsAny()
- string – La valeur de chaîne pour le premier argument. L'argument peut également avoir une valeur nulle.
- searchStrings – Un ensemble d'arguments de chaîne pour que la méthode recherche si la première chaîne d'argument est présente.
La méthode StringUtils equalsAny() renvoie
- Renvoie vrai si la chaîne recherchée figure parmi le nombre variable de chaînes de recherche. Ceci est valable même si les deux arguments sont nuls.
- Renvoie false si la chaîne à rechercher ne correspond à aucune chaîne du nombre variable de chaînes de recherche.
Exemple :
import org.apache.commons.lang3.StringUtils; public class CompareTwoStrings { public static void main(String[] args) { String stringOne = "Guru99"; String[] stringTwo = new String[] { "Guru99", "JavaGuru99" }; System.out.println("is Guru99 available: " + StringUtils.equalsAny(stringOne, stringTwo)); String[] stringThree = new String[] { "GURU99", "JavaGuru99" }; System.out.println("is GURU99 available: " + StringUtils.equalsAny(stringOne, stringThree)); } }
Sortie :
is Guru99 available: true is GURU99 available: false
Explication:
Puisque les contenus de la première chaîne et de la deuxième chaîne sont égaux, le résultat renvoie vrai. Vous pouvez utiliser la méthode «equalsAnyIgnoreCase» pour ignorer la casse.
Méthode 6 : Utilisation de l’opérateur ==
L'opérateur == sur les chaînes vérifie si les références d'objet ont la même adresse.
Exemple :
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree));
}
}
Production attendue:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Explication:
- Le premier résultat renvoie la valeur booléenne « vrai ». Les chaînes de caractères ayant le même contenu sont ajoutées au même pool de chaînes ; elles partagent donc une même adresse.
- Le second résultat renvoie la valeur booléenne « faux ». Les objets ont un contenu différent, ce qui entraîne des pools de chaînes de caractères différents. Cela signifie que les chaînes ont des références d'objet distinctes ; par conséquent, le résultat est « faux ».
Méthode 7 : création d'une méthode personnalisée pour comparer deux chaînes dans Java
Créez une méthode qui compare deux chaînes en utilisant l'ordre lexicographique.
syntaxe:
public static int compareTwoStrings(String str1, String str2)
Paramètres de méthode personnalisés
- str1 – La chaîne à comparer.
- str2 – La chaîne à comparer.
Retours de méthode personnalisée
- 0 – Renvoie zéro si la première chaîne est égale à la deuxième chaîne.
- < 0 – Renvoie un nombre inférieur à zéro si la première chaîne est inférieure à la deuxième chaîne.
- > 0 – Renvoie un nombre supérieur à zéro si la première chaîne est supérieure à la deuxième chaîne.
Exemple :
public class CompareTwoStrings {
public static int compareTwoStrings(String stringOne, String stringTwo) {
int lengthOfStringOne = stringOne.length();
int lengthOfStringTwo = stringTwo.length();
int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo);
for (int i = 0; i < minStringLength; i++) {
char stringOneCharValue = stringOne.charAt(i);
char stringTwoCharValue = stringTwo.charAt(i);
if (stringOneCharValue != stringTwoCharValue) {
return stringOneCharValue - stringTwoCharValue;
}
}
if (lengthOfStringOne != lengthOfStringTwo) {
return lengthOfStringOne - lengthOfStringTwo;
} else {
return 0;
}
}
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo));
}
}
Production attendue:
is Guru99 equal to Guru99: 0
Explication:
Le résultat a renvoyé une valeur zéro, ce qui signifie que la fonction personnalisée fonctionne comme prévu.
