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.