Come confrontare due stringhe in Java

Metodi per confrontare stringhe in Java

Java fornisce diversi metodi che è possibile sfruttare per confrontare due stringhe Java. Confronto tra stringhe in Java è una funzionalità che abbina una sequenza di caratteri a una stringa.

Per imparare a confrontare le stringhe in Java, è possibile utilizzare i metodi forniti dalle seguenti classi.

  • Classe String da Javapacchetto .lang.
  • Classe di oggetti da Javapacchetto .util.
  • Classe StringUtils dal pacchetto org.apache.commons.lang3.

Molti di questi Java I metodi di confronto delle stringhe hanno soluzioni per ignorare il caso. In questo Java tutorial imparerai i diversi metodi che puoi utilizzare per confrontare due stringhe.

Metodo 1: metodo String equals()

Il Java Corda metodo equals() confronta due oggetti stringa per valori stringa uguali.

Sintassi:

public boolean equals(Object anObject)

parametri del metodo equals():

anObject – La stringa dell'argomento per confrontare le stringhe.

tipi restituiti dal metodo equals()

  • Restituisce vero se la stringa letterale fornita è la stessa della prima stringa.
  • Restituisce falso se la prima stringa non è la stessa stringa dell'argomento.

Esempio:

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));
  }
}

Uscita prevista:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

Spiegazione:

  • Hai ottenuto false nell'ultimo output perché l'oggetto specificato ha un caso diverso.

Note:: utilizza il metodo stringa uguale per il confronto tra stringhe con distinzione tra maiuscole e minuscole. Utilizzare il metodo "equalsIgnoreCase" per confrontare oggetti stringa con valori stringa diversi.

Metodo 2: metodo Oggetti equals()

Il Java Oggetti uguali() Il metodo confronta due oggetti stringa per verificare se hanno gli stessi valori.

Sintassi:

public static boolean equals(Object a, Object b)

parametri del metodo equals()

a – Stringa di argomento per il primo oggetto stringa.

b – Stringa di argomento per il secondo oggetto stringa.

tipi restituiti dal metodo equals()

  • Restituisce vero se i valori letterali della stringa sono uguali. Anche il passaggio di un valore nullo nei due argomenti restituirà true.
  • Restituisce false se i valori letterali della stringa non sono uguali.

Esempio:

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));
    }
}

Produzione:

is Guru99 equal to Guru99: true
is Guru99 equal to Guru99: true

Spiegazione:

Da questo esempio puoi vedere che l'output è un valore booleano true poiché le stringhe confrontate sono uguali.

Metodo 3: metodo String compareTo()

Il Java Stringa confrontaTo() metodo confronta due stringhe in ordine alfabetico. Di solito è definito ordine lessicografico.

Sintassi:

public int compareTo(String str)

parametri del metodo compareTo()

str – La stringa da confrontare con la stringa corrente.

Il metodo compareTo() restituisce

  • 0 – Restituisce zero se l'oggetto specificato è uguale alla stringa corrente.
  • < 0 – Restituisce un numero inferiore a zero se questa stringa è inferiore all'oggetto specificato.
  • > 0 – Restituisce un numero maggiore di zero se questa stringa supera la stringa fornita.

Esempio:

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));
    }
}

Uscita prevista:

is Guru99 equal to Guru99: 0
is Guru99 equal to GURU99: 32

Spiegazione:

Il primo risultato restituisce un valore pari a zero poiché la prima e la seconda stringa sono uguali.

Il secondo risultato restituisce un valore pari a trentadue poiché i caratteri sono diversi.

Nota: Per ignorare i casi, è possibile utilizzare il metodo “compareToIgnoreCase”.

Metodo 4: metodo StringUtils equals()

Il Java StringUtils è uguale a() metodo confronta l'uguaglianza di due sequenze di caratteri.

Assicurati di aver aggiunto la libreria "org.apache.commons.lang3" al tuo programma. Ciò ti consentirà di confrontare le stringhe utilizzando i metodi StringUtil.

Per i progetti Maven, usa questo guida per aggiungere la libreria al progetto.

Tuttavia, se desideri aggiungere la libreria senza strumenti di creazione, utilizza questo guida.

Sintassi:

public static boolean equals(CharSequnce cs1, CharSequence cs2)

Parametri del metodo StringUtils equals()

  • cs1 – Una sequenza di caratteri per il primo argomento.
  • cs2 – Una sequenza di caratteri per il secondo argomento.

Il metodo StringUtils equals() restituisce

  • Restituisce vero se il confronto tra stringhe è uguale. Si applica se si passa un valore nullo nei due argomenti.
  • Restituisce falso se il confronto tra stringhe non è uguale.

Esempio:

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));
    }
}

Produzione:

is Guru99 equal to Guru99: true
is Guru99 equal to GURU99: false

Spiegazione:

Poiché il contenuto della prima e della seconda stringa è uguale, il risultato restituisce true.

È possibile utilizzare il metodo "equalsIgnoreCase" per ignorare il caso.

Metodo 5: metodo StringUtils equalsAny()

Il Java StringUtils è uguale ad Any() Il metodo controlla se esiste una stringa negli argomenti.

Sintassi:

public static boolean equalsAny(CharSequence string, Charsequence… searchStrings)

Parametri del metodo StringUtils equalsAny()

  • string – Il valore stringa per il primo argomento. L'argomento può anche avere un valore null.
  • searchStrings – Un insieme di argomenti stringa affinché il metodo possa verificare se è presente la stringa del primo argomento.

Il metodo StringUtils equalsAny() restituisce

  • Restituisce vero se la stringa da trovare esiste nel numero variabile di stringhe di ricerca. Ciò si applica se entrambi gli argomenti sono nulli.
  • Restituisce falso se la stringa da trovare non corrisponde ad alcuna stringa nel numero variabile di stringhe di ricerca.

Esempio:

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));
    }
}

Produzione:

is Guru99 available: true
is GURU99 available: false

Spiegazione:

Poiché il contenuto della prima stringa e della seconda stringa sono uguali, il risultato restituisce true. È possibile utilizzare il metodo "equalsAnyIgnoreCase" per ignorare il caso.

Metodo 6: utilizzo dell'operatore ==

L'operatore == sulle stringhe controlla se i riferimenti agli oggetti hanno lo stesso indirizzo.

Esempio:

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));
    }
}

Uscita prevista:

is Guru99 == to Guru99: true
is Guru99 == to GURU99: false

Spiegazione:

  • Il primo risultato restituisce il valore booleano true. Le stringhe con lo stesso contenuto vengono aggiunte allo stesso pool di stringhe, quindi la stringa condivide un indirizzo.
  • Il secondo risultato restituisce un valore booleano falso. Gli oggetti hanno contenuti diversi, che si traducono in altri pool di stringhe. Ciò significa che le stringhe hanno riferimenti a oggetti separati; quindi l'output è falso.

Metodo 7: creazione di un metodo personalizzato per confrontare due stringhe Java

Creare un metodo che confronti due stringhe utilizzando l'ordine lessicografico.

Sintassi:

public static int compareTwoStrings(String str1, String str2)

Parametri del metodo personalizzato

  • str1 – La stringa da confrontare.
  • str2 – La stringa con cui confrontare.

Restituzioni del metodo personalizzato

  • 0 – Restituisce zero se la prima stringa è uguale alla seconda stringa.
  • < 0 – Restituisce un numero inferiore a zero se la prima stringa è inferiore alla seconda stringa.
  • > 0 – Restituisce un numero maggiore di zero se la prima stringa è maggiore della seconda stringa.

Esempio:

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));
    }
}

Uscita prevista:

is Guru99 equal to Guru99: 0

Spiegazione:

Il risultato ha restituito un valore pari a zero, il che significa che la funzione personalizzata funziona come previsto.

Sommario:

Il Java Il metodo di confronto di due stringhe da utilizzare dipende dai seguenti fattori.

  • Desiderio di avere il controllo sul tuo metodo. In questo caso, crea un metodo personalizzato.
  • Non puoi utilizzare il codice legacy. con Java 6 e inferiori.
  • Il metodo che ha prestazioni ottimali.
  • Il tipo di dati con cui stai lavorando. Ad esempio, corrispondendo a una stringa da un insieme di argomenti variabili.
  • Le funzionalità fornite dalla libreria in outsourcing. Ad esempio, la libreria StringUtils fornisce diversi metodi per confrontare le stringhe.