Comment comparer deux chaînes dans Java

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 de chaînes du JavaPaquet .lang.
  • Classe d'objets de la JavaPaquet .util.
  • Classe StringUtils du package org.apache.commons.lang3.

La plupart de ceux-ci Java Les méthodes de comparaison de chaînes ont des solutions pour ignorer la casse. Dans ce Java tutoriel, vous apprendrez les différentes méthodes que vous pouvez utiliser pour comparer deux chaînes.

Méthode 1 : méthode String equals()

La 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.

Mise en situation :

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.

Notes: utilisez la méthode string equals pour la comparaison de chaînes sensibles à la casse. Utilisez la méthode « equalsIgnoreCase » pour comparer des objets chaîne avec différentes valeurs de chaîne.

Méthode 2 : méthode Objets égaux()

La 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.

Mise en situation :

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:

À partir de cet exemple, vous pouvez voir que la sortie est une valeur booléenne true puisque les chaînes comparées sont égales.

Méthode 3 : méthode String compareTo()

La 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.

Mise en situation :

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 une valeur zéro puisque les première et deuxième chaînes sont égales.

Le deuxième résultat renvoie une valeur de trente-deux puisque les caractères sont différents.

Remarque : Pour ignorer les cas, vous pouvez utiliser la méthode « compareToIgnoreCase ».

Méthode 4 : méthode StringUtils equals()

La 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 » dans votre programme. Cela vous permettra de comparer des chaînes à l'aide des méthodes StringUtil.

Pour les projets Maven, utilisez ceci guide pour ajouter la bibliothèque au projet.

Cependant, si vous souhaitez ajouter la bibliothèque sans aucun outil de construction, utilisez ceci guide.

syntaxe:

public static boolean equals(CharSequnce 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 la comparaison de chaînes est égale. Cela s'applique si vous transmettez une valeur nulle dans les deux arguments.
  • Renvoie false si la comparaison de chaînes n'est pas égale.

Mise en situation :

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()

La 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 à rechercher existe dans le nombre variable de chaînes de recherche. Cela s'applique 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.

Mise en situation :

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.

Mise en situation :

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 une valeur booléenne true. Les chaînes avec le même contenu sont ajoutées au même pool de chaînes, la chaîne partage donc une adresse.
  • Le deuxième résultat renvoie une valeur booléenne false. Les objets ont des contenus différents, ce qui donne lieu à d'autres pools de chaînes. Cela signifie que les chaînes ont des références d'objet distinctes ; donc la sortie est fausse.

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.

Mise en situation :

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.

Résumé :

La Java La méthode de comparaison de deux chaînes à utiliser dépend des facteurs suivants.

  • Désir d’avoir le contrôle sur votre méthode. Dans ce cas, créez une méthode personnalisée.
  • Vous ne pouvez pas utiliser le code Legacy. avec Java 6 et inférieur.
  • La méthode qui a des performances optimales.
  • Le type de données avec lequel vous travaillez. Par exemple, faire correspondre une chaîne à partir d'un ensemble d'arguments variables.
  • Les fonctionnalités fournies par la bibliothèque externalisée. Par exemple, la bibliothèque StringUtils propose différentes méthodes pour comparer des chaînes.