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.