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.
