Kuidas võrrelda kahte stringi Java

Stringide võrdlemise meetodid Java

Java pakub erinevaid meetodeid, mida saate kasutada kahe stringi võrdlemiseks Java. Stringide võrdlus sisse Java on funktsioon, mis sobitab tähemärkide jada stringiga.

Et õppida, kuidas stringe sees võrrelda Java, saate kasutada järgmiste klasside pakutavaid meetodeid.

  • Keelpilliklass alates Java.lang pakett.
  • Objektide klass alates Java.util pakett.
  • StringUtilsi klass paketist org.apache.commons.lang3.

Enamik neist Java stringide võrdlemise meetoditel on lahendused suurtähtede ignoreerimiseks. Selles Java õpetusest saate teada erinevaid meetodeid, mida saate kasutada kahe stringi võrdlemiseks.

1. meetod: String võrdub() meetod

. Java nöör võrdub() meetod võrdleb kahte stringiobjekti võrdsete stringiväärtuste saamiseks.

süntaksit:

public boolean equals(Object anObject)

võrdub() meetodi parameetritega:

anObject – argumendistring stringide võrdlemiseks.

võrdub() meetodi tagastustüübid

  • Tagastab tõene, kui esitatud stringiliteraal on sama, mis esimene string.
  • Tagastab väärtuse false, kui esimene string ei ole argumendistringiga sama.

Näide:

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

Eeldatav väljund:

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

Selgitus:

  • Viimases väljundis on vale, kuna määratud objektil on erinev suurtäht.

märkused: kasutage tõstutundlike stringide võrdlemiseks meetodit string võrdub. Erinevate stringiväärtustega stringiobjektide võrdlemiseks kasutage meetodit "equalsIgnoreCase".

2. meetod: Objektid võrdub () meetod

. Java Objektid võrdub() meetod võrdleb kahte stringiobjekti, et leida, kas neil on samad väärtused.

süntaksit:

public static boolean equals(Object a, Object b)

võrdub() meetodi parameetritega

a – esimese stringiobjekti argumendistring.

b – teise stringobjekti argumendistring.

võrdub() meetodi tagastustüübid

  • Tagastab tõene, kui stringiliteraalid on võrdsed. Nullväärtuse edastamine kahes argumendis tagastab samuti tõene.
  • Tagastab vale, kui stringiliteraalid ei ole võrdsed.

Näide:

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

Väljund:

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

Selgitus:

Sellest näitest näete, et väljund on tõene tõeväärtus, kuna võrreldavad stringid on võrdsed.

3. meetod: stringi võrdlemine() meetod

. Java String Võrdle() meetod võrdleb kahte stringi tähestikulises järjekorras. Tavaliselt nimetatakse seda leksikograafiliseks järjekorraks.

süntaksit:

public int compareTo(String str)

Võrdle() meetodi parameetreid

str – string, mida võrrelda praeguse stringiga.

Võrdle() meetod tagastab

  • 0 – tagastab nulli, kui määratud objekt on võrdne praeguse stringiga.
  • < 0 – tagastab arvu, mis on väiksem kui null, kui see string on väiksem kui määratud objekt.
  • > 0 – tagastab arvu, mis on suurem kui null, kui see string ületab esitatud stringi.

Näide:

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

Eeldatav väljund:

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

Selgitus:

Esimene tulemus tagastab väärtuse null, kuna esimene ja teine ​​string on võrdsed.

Teine tulemus tagastab väärtuse kolmkümmend kaks, kuna märgid on erinevad.

Märge: Juhtumite ignoreerimiseks võite kasutada meetodit CompareToIgnoreCase.

4. meetod: StringUtils võrdub() meetod

. Java StringUtils võrdub() meetod võrdleb kahe märgijada võrdsust.

Veenduge, et olete oma programmi lisanud teegi „org.apache.commons.lang3”. See võimaldab teil stringe StringUtili meetodite abil võrrelda.

Maveni projektide jaoks kasutage seda suunata raamatukogu lisamiseks projekti.

Kui aga soovite raamatukogu lisada ilma ehitustööriistadeta, kasutage seda suunata.

süntaksit:

public static boolean equals(CharSequnce cs1, CharSequence cs2)

StringUtils võrdub () meetodi parameetritega

  • cs1 – märgijada esimese argumendi jaoks.
  • cs2 – märgijada teise argumendi jaoks.

StringUtils equals() tagastab meetodi

  • Tagastab tõene, kui stringide võrdlus on võrdne. See kehtib, kui edastate kahes argumendis nullväärtuse.
  • Tagastab väärtuse false, kui stringide võrdlus pole võrdne.

Näide:

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

Väljund:

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

Selgitus:

Kuna esimese ja teise stringi sisu on võrdne, tagastab tulemus tõene.

Suur- ja suurtähtede ignoreerimiseks võite kasutada meetodit „equalsIgnoreCase”.

5. meetod: StringUtils võrdub iga() meetodiga

. Java StringUtils võrdubAny() meetod kontrollib, kas argumentides on string.

süntaksit:

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

StringUtils võrdub iga() meetodi parameetritega

  • string – stringi väärtus esimese argumendi jaoks. Argumendil võib olla ka nullväärtus.
  • searchStrings – stringiargumentide komplekt meetodi jaoks, et leida, kas esimene argumendistring on olemas.

StringUtils equalsAny() meetod tagastab

  • Tagastab väärtuse tõene, kui vastetav string on otsingustringide muutuvas arvus. See kehtib juhul, kui mõlemad argumendid on tühised.
  • Tagastab väärtuse false, kui sobitatav string ei vasta ühelegi stringile otsingustringide muutuva arvu hulgast.

Näide:

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

Väljund:

is Guru99 available: true
is GURU99 available: false

Selgitus:

Kuna esimese ja teise stringi sisu on võrdne, tagastab tulemus tõene. Suur- ja suurtähtede ignoreerimiseks võite kasutada meetodit „equalsAnyIgnoreCase”.

6. meetod: operaatori == kasutamine

Stringide operaator == kontrollib, kas objektiviidetel on sama aadress.

Näide:

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

Eeldatav väljund:

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

Selgitus:

  • Esimene tulemus tagastab tõeväärtuse tõene. Sama sisuga stringid lisatakse samasse stringikogumisse, seega jagab string ühte aadressi.
  • Teine tulemus tagastab tõeväärtuse false. Objektidel on erinev sisu, mille tulemuseks on muud stringikogumid. See tähendab, et stringidel on eraldi objektiviited; seega on väljund vale.

7. meetod: kohandatud meetodi loomine kahe stringi võrdlemiseks Java

Looge meetod, mis võrdleb kahte stringi, kasutades leksikograafilist järjekorda.

süntaksit:

public static int compareTwoStrings(String str1, String str2)

Kohandatud meetodi parameetrid

  • str1 – string, mida võrrelda.
  • str2 – string, millega võrrelda.

Kohandatud meetod tagastab

  • 0 – tagastab nulli, kui esimene string on võrdne teise stringiga.
  • < 0 – tagastab arvu, mis on väiksem kui null, kui esimene string on teisest väiksem.
  • > 0 – tagastab arvu, mis on suurem kui null, kui esimene string on suurem kui teine ​​string.

Näide:

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

Eeldatav väljund:

is Guru99 equal to Guru99: 0

Selgitus:

Tulemus tagastas väärtuse null, mis tähendab, et kohandatud funktsioon töötab ootuspäraselt.

Kokkuvõte:

. Java Kahe stringi võrdlemise meetod sõltub järgmistest teguritest.

  • Soov omada oma meetodi üle kontrolli. Sel juhul looge kohandatud meetod.
  • Te ei saa kasutada pärandkoodi. koos Java 6 ja madalam.
  • Optimaalse jõudlusega meetod.
  • Andmete tüüp, millega töötate. Näiteks stringi sobitamine muutujaargumentide komplektist.
  • Väljast tellitud raamatukogu pakutavad funktsioonid. Näiteks StringUtilsi teek pakub stringide võrdlemiseks erinevaid meetodeid.