Hogyan hasonlítsunk össze két karakterláncot Java

Módszerek a karakterláncok összehasonlítására Java

Java különböző módszereket kínál, amelyek segítségével összehasonlíthat két karakterláncot Java. Karakterlánc összehasonlítás in Java egy olyan funkció, amely karaktersorozatot illeszt egy karakterlánchoz.

Megtanulhatja, hogyan kell összehasonlítani a karakterláncokat Java, használhatja a következő osztályok által biztosított metódusokat.

  • Vonós osztály a Java.lang csomag.
  • Objektumok osztály a Java.util csomag.
  • StringUtils osztály az org.apache.commons.lang3 csomagból.

A legtöbb ilyen Java Összehasonlítási karakterláncok módszereinek vannak megoldásai az eset figyelmen kívül hagyására. Ebben Java oktatóanyagból megismerheti a különböző módszereket, amelyekkel összehasonlíthat két karakterláncot.

1. módszer: String equals() metódus

A Java Húr egyenlő() metódus összehasonlít két karakterlánc objektumot azonos karakterláncértékekért.

Syntax:

public boolean equals(Object anObject)

egyenlő() metódus paraméterei:

anObject – A karakterláncok összehasonlítására szolgáló argumentumkarakterlánc.

equals() metódus visszatérési típusai

  • Igaz értéket ad vissza, ha a megadott karakterlánc-literál megegyezik az első karakterlánccal.
  • False értéket ad vissza, ha az első karakterlánc nem egyezik meg az argumentum karakterlánccal.

Példa:

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

Várható teljesítmény:

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

Magyarázat:

  • Hamis értéket kapott az utolsó kimenetben, mert a megadott objektumnak más a kis- és nagybetűje.

Megjegyzések: Használja a string equals metódust a kis- és nagybetűk közötti karakterlánc-összehasonlításhoz. Használja az „equalsIgnoreCase” metódust a különböző karakterlánc-értékekkel rendelkező karakterlánc-objektumok összehasonlításához.

2. módszer: Az objektumok egyenlőek() metódusa

A Java Az objektumok egyenlő () metódus összehasonlítja két karakterlánc objektumot, hogy megállapítsa, azonosak-e az értékek.

Syntax:

public static boolean equals(Object a, Object b)

egyenlő() metódus paraméterei

a – Az első karakterlánc objektum argumentuma.

b – A második karakterlánc-objektum argumentuma.

equals() metódus visszatérési típusai

  • Igaz értéket ad vissza, ha a karakterlánc-literálok egyenlőek. Ha a két argumentumban null értéket adunk át, az is igazat ad vissza.
  • False értéket ad vissza, ha a karakterlánc-literálok nem egyenlőek.

Példa:

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

output:

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

Magyarázat:

Ebből a példából láthatja, hogy a kimenet igaz logikai értéke, mivel az összehasonlított karakterláncok egyenlőek.

3. módszer: String Összehasonlításhoz() metódus

A Java String Összehasonlításhoz() módszer két karakterláncot hasonlít össze ábécé sorrendben. Általában lexikográfiai rendnek nevezik.

Syntax:

public int compareTo(String str)

Összehasonlítás() metódus paraméterei

str – Az aktuális karakterlánccal összehasonlítandó karakterlánc.

Összehasonlítás() metódus adja vissza

  • 0 – Nullát ad vissza, ha a megadott objektum egyenlő az aktuális karakterlánccal.
  • < 0 – nullánál kisebb számot ad vissza, ha ez a karakterlánc kisebb, mint a megadott objektum.
  • > 0 – Nullánál nagyobb számot ad vissza, ha ez a karakterlánc meghaladja a megadott karakterláncot.

Példa:

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

Várható teljesítmény:

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

Magyarázat:

Az első eredmény nulla értéket ad vissza, mivel az első és a második karakterlánc egyenlő.

A második eredmény harminckettőt ad vissza, mivel a karakterek eltérőek.

Jegyzet: Az esetek figyelmen kívül hagyásához használhatja a „compareToIgnoreCase” metódust.

4. módszer: StringUtils equals() metódus

A Java StringUtils egyenlő () módszer két karaktersorozat egyenlőségét hasonlítja össze.

Győződjön meg arról, hogy hozzáadta a programhoz az „org.apache.commons.lang3” könyvtárat. Ez lehetővé teszi a karakterláncok összehasonlítását a StringUtil metódusokkal.

Maven projektekhez használja ezt útmutató a könyvtár hozzáadásához a projekthez.

Ha azonban összeállítási eszközök nélkül szeretné hozzáadni a könyvtárat, használja ezt útmutató.

Syntax:

public static boolean equals(CharSequnce cs1, CharSequence cs2)

A StringUtils equals() metódus paraméterei

  • cs1 – Az első argumentum karaktersorozata.
  • cs2 – A második argumentum karaktersorozata.

A StringUtils equals() metódussal tér vissza

  • Igaz értéket ad vissza, ha a karakterlánc-összehasonlítás egyenlő. Akkor érvényes, ha null értéket ad meg a két argumentumban.
  • False értéket ad vissza, ha a karakterlánc-összehasonlítás nem egyenlő.

Példa:

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

output:

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

Magyarázat:

Mivel az első és a második karakterlánc tartalma egyenlő, az eredmény igazat ad vissza.

Használhatja az „equalsIgnoreCase” metódust a kis- és nagybetűk figyelmen kívül hagyásához.

5. módszer: StringUtils equalsAny() metódus

A Java StringUtils equalsAny() metódus ellenőrzi, hogy létezik-e karakterlánc az argumentumokban.

Syntax:

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

StringUtils equalsAny() metódus paraméterei

  • string – Az első argumentum karakterlánc-értéke. Az argumentum null értéke is lehet.
  • searchStrings – Karakterlánc-argumentumok halmaza a metódus számára annak megállapítására, hogy az első argumentumkarakterlánc jelen van-e.

A StringUtils equalsAny() metódus visszatér

  • Igaz értéket ad vissza, ha az egyező karakterlánc megtalálható a változó számú keresési karakterláncban. Ez akkor érvényes, ha mindkét argumentum nulla.
  • False értéket ad vissza, ha a megfelelő karakterlánc nem egyezik egyetlen karakterlánccal sem a változó számú keresési karakterláncban.

Példa:

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

output:

is Guru99 available: true
is GURU99 available: false

Magyarázat:

Mivel az első és a második karakterlánc tartalma egyenlő, az eredmény igazat ad vissza. Használhatja az „equalsAnyIgnoreCase” metódust a kis- és nagybetűk figyelmen kívül hagyásához.

6. módszer: == operátor használata

A karakterláncok == operátora ellenőrzi, hogy az objektumhivatkozások címe megegyezik-e.

Példa:

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

Várható teljesítmény:

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

Magyarázat:

  • Az első eredmény igaz logikai értékkel tér vissza. Az azonos tartalmú karakterláncok ugyanabba a karakterlánc-készletbe kerülnek, így a karakterlánc egy címen osztozik.
  • A második eredmény hamis logikai értéket ad vissza. Az objektumok eltérő tartalommal rendelkeznek, ami más karakterlánc-készleteket eredményez. Ez azt jelenti, hogy a karakterláncoknak külön objektumhivatkozásaik vannak; így a kimenet hamis.

7. módszer: Egyéni metódus létrehozása két karakterlánc összehasonlításához Java

Hozzon létre egy módszert, amely lexikográfiai sorrendben hasonlít össze két karakterláncot.

Syntax:

public static int compareTwoStrings(String str1, String str2)

Egyedi metódusparaméterek

  • str1 – Az összehasonlítandó karakterlánc.
  • str2 – Az összehasonlítandó karakterlánc.

Az egyéni metódus visszatér

  • 0 – nullát ad vissza, ha az első karakterlánc egyenlő a második karakterlánccal.
  • < 0 – Nullánál kisebb számot ad vissza, ha az első karakterlánc kisebb, mint a második karakterlánc.
  • > 0 – Nullánál nagyobb számot ad vissza, ha az első karakterlánc nagyobb, mint a második karakterlánc.

Példa:

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

Várható teljesítmény:

is Guru99 equal to Guru99: 0

Magyarázat:

Az eredmény nulla értéket adott vissza, ami azt jelenti, hogy az egyéni függvény a várt módon működik.

Összefoglaló:

A Java A két karakterlánc összehasonlítása a következő tényezőktől függ.

  • Vágy, hogy uralja a módszerét. Ebben az esetben hozzon létre egy egyéni metódust.
  • Nem használhat örökölt kódot. -vel Java 6 és alacsonyabb.
  • Optimális teljesítményt nyújtó módszer.
  • Az Ön által használt adatok típusa. Például egy karakterlánc egyeztetése változó argumentumok halmazából.
  • A kihelyezett könyvtár által biztosított funkciók. Például a StringUtils könyvtár különféle módszereket kínál a karakterláncok összehasonlítására.

Foglald össze ezt a bejegyzést a következőképpen: