Cum se compară două șiruri în Java
Metode de comparare a șirurilor în Java
Java oferă metode diferite pe care le puteți utiliza pentru a compara două șiruri de caractere Java. Comparație de șiruri în Java este o caracteristică care potrivește o secvență de caractere cu un șir.
Pentru a învăța cum să compari șirurile în Java, puteți folosi metodele oferite de următoarele clase.
- Clasa de șiruri din Javapachet .lang.
- Clasa de obiecte din Javapachet .util.
- Clasa StringUtils din pachetul org.apache.commons.lang3.
Cele mai multe dintre acestea Java metodele de comparare a șirurilor au soluții pentru ignorarea cazului. In aceasta Java tutorial, veți învăța diferitele metode pe care le puteți utiliza pentru a compara două șiruri.
Metoda 1: metoda String equals().
Java Şir metoda equals(). compară două obiecte șir pentru valori egale.
Sintaxă:
public boolean equals(Object anObject)
parametrii metodei equals():
anObject – Șirul de argument pentru compararea șirurilor.
tipuri de returnare a metodei equals().
- Returnează adevărat dacă literalul șir furnizat este același cu primul șir.
- Returnează false dacă primul șir nu este același cu șirul argument.
Exemplu:
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)); } }
Ieșire preconizată:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Explicaţie:
- Ați primit false în ultima ieșire, deoarece obiectul specificat are un caz diferit.
notițe: Folosiți metoda șir equals pentru compararea șirurilor de caractere sensibile la majuscule. Utilizați metoda „equalsIgnoreCase” pentru a compara obiecte șir cu valori diferite de șir.
Metoda 2: Metoda Objects equals().
Java Obiectele sunt egale cu () metoda compară două obiecte șir pentru a afla dacă au aceleași valori.
Sintaxă:
public static boolean equals(Object a, Object b)
parametrii metodei equals().
a – Șir de argument pentru primul obiect șir.
b – Șir de argument pentru al doilea obiect șir.
tipuri de returnare a metodei equals().
- Returnează adevărat dacă literalele șirului sunt egale. Transmiterea unei valori nule în cele două argumente va returna, de asemenea, true.
- Returnează false dacă literalele șirului nu sunt egale.
Exemplu:
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)); } }
ieșire:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Explicaţie:
Din acest exemplu, puteți vedea că rezultatul este o valoare booleană true, deoarece șirurile comparate sunt egale.
Metoda 3: metoda String compareTo().
Java String compareTo() metoda compară două șiruri în ordine alfabetică. Este de obicei denumită ordine lexicografică.
Sintaxă:
public int compareTo(String str)
parametrii metodei compareTo().
str – Șirul de comparat cu șirul curent.
Metoda compareTo() returnează
- 0 – Returnează zero dacă obiectul specificat este egal cu șirul curent.
- < 0 – Returnează un număr mai mic decât zero dacă acest șir este mai mic decât obiectul specificat.
- > 0 – Returnează un număr mai mare decât zero dacă acest șir depășește șirul furnizat.
Exemplu:
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)); } }
Ieșire preconizată:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Explicaţie:
Primul rezultat returnează o valoare zero, deoarece primul și al doilea șir sunt egale.
Al doilea rezultat returnează o valoare de treizeci și doi, deoarece caracterele sunt diferite.
Notă: Pentru a ignora cazurile, puteți utiliza metoda „compareToIgnoreCase”.
Metoda 4: metoda StringUtils equals().
Java StringUtils este egal cu () metoda compară egalitatea a două secvențe de caractere.
Asigurați-vă că ați adăugat biblioteca „org.apache.commons.lang3” în programul dvs. Acest lucru vă va permite să comparați șiruri folosind metodele StringUtil.
Pentru proiectele Maven, utilizați aceasta ghida pentru a adăuga biblioteca la proiect.
Cu toate acestea, dacă doriți să adăugați biblioteca fără instrumente de construcție, utilizați aceasta ghida.
Sintaxă:
public static boolean equals(CharSequnce cs1, CharSequence cs2)
StringUtils equals() parametrii metodei
- cs1 – O secvență de caractere pentru primul argument.
- cs2 – O secvență de caractere pentru al doilea argument.
StringUtils returnează metoda equals().
- Returnează adevărat dacă comparația șirurilor este egală. Se aplică dacă treceți o valoare nulă în cele două argumente.
- Returnează false dacă comparația șirurilor nu este egală.
Exemplu:
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)); } }
ieșire:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Explicaţie:
Deoarece conținutul primului și celui de-al doilea șir este egal, rezultatul returnează adevărat.
Puteți utiliza metoda „equalsIgnoreCase” pentru a ignora cazul.
Metoda 5: metoda StringUtils equalsAny().
Java StringUtils equalsAny() metoda verifică dacă există un șir în argumente.
Sintaxă:
public static boolean equalsAny(CharSequence string, Charsequence… searchStrings)
StringUtils equalsAny() parametrii metodei
- șir – Valoarea șirului pentru primul argument. Argumentul poate avea și o valoare nulă.
- searchStrings – Un set de argumente șir pentru metoda pentru a afla dacă primul șir de argument este prezent.
Metoda StringUtils equalsAny() returnează
- Returnează adevărat dacă șirul de potrivire există în numărul variabil de șiruri de căutare. Acest lucru se aplică dacă ambele argumente sunt nule.
- Returnează false dacă șirul de potrivire nu se potrivește cu niciun șir din numărul variabil de șiruri de căutare.
Exemplu:
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)); } }
ieșire:
is Guru99 available: true is GURU99 available: false
Explicaţie:
Deoarece conținutul primului șir și al celui de-al doilea șir sunt egale, rezultatul returnează adevărat. Puteți utiliza metoda „equalsAnyIgnoreCase” pentru a ignora cazul.
Metoda 6: Folosind operatorul ==
Operatorul == de pe șiruri verifică dacă referințele la obiecte au aceeași adresă.
Exemplu:
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)); } }
Ieșire preconizată:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Explicaţie:
- Primul rezultat returnează o valoare booleană true. Șirurile cu același conținut sunt adăugate la același pool de șiruri, deci șirurile partajează o adresă.
- Al doilea rezultat returnează o valoare booleană false. Obiectele au conținut diferit, ceea ce duce la alte pool-uri de șiruri. Aceasta înseamnă că șirurile au referințe separate la obiect; astfel rezultatul este fals.
Metoda 7: Crearea unei metode personalizate pentru a compara două șiruri în Java
Creați o metodă care compară două șiruri folosind ordinea lexicografică.
Sintaxă:
public static int compareTwoStrings(String str1, String str2)
Parametrii metodei personalizați
- str1 – Șirul de comparat.
- str2 – Șirul cu care se compară.
Metoda personalizată returnează
- 0 – Returnează zero dacă primul șir este egal cu al doilea șir.
- < 0 – Returnează un număr mai mic decât zero dacă primul șir este mai mic decât al doilea șir.
- > 0 – Returnează un număr mai mare decât zero dacă primul șir este mai mare decât al doilea șir.
Exemplu:
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)); } }
Ieșire preconizată:
is Guru99 equal to Guru99: 0
Explicaţie:
Rezultatul a returnat o valoare zero, ceea ce înseamnă că funcția personalizată funcționează conform așteptărilor.
Rezumat:
Java Metoda de comparare a două șiruri de folosit depinde de următorii factori.
- Dorința de a avea control asupra metodei tale. În acest caz, creați o metodă personalizată.
- Nu puteți utiliza codul Legacy. cu Java 6 și mai jos.
- Metoda care are performanțe optime.
- Tipul de date cu care lucrați. De exemplu, potrivirea unui șir dintr-un set de argumente variabile.
- Caracteristicile oferite de biblioteca externalizată. De exemplu, biblioteca StringUtils oferă diferite metode de comparare a șirurilor.