İki Dize nasıl karşılaştırılır Java

Dizelerin Karşılaştırılması Yöntemleri Java

Java iki dizeyi karşılaştırmak için kullanabileceğiniz farklı yöntemler sağlar Java. Dize karşılaştırması Java bir karakter dizisini bir dizeyle eşleştiren bir özelliktir.

Dizelerin nasıl karşılaştırılacağını öğrenmek için Java, aşağıdaki sınıfların sağladığı yöntemleri kullanabilirsiniz.

  • Dize sınıfı Java.lang paketi.
  • Nesneler sınıfı Java.util paketi.
  • org.Apache.commons.lang3 paketindeki StringUtils sınıfı.

Bunların çoğu Java dizeleri karşılaştırma yöntemlerinin büyük/küçük harf durumunu göz ardı etmeye yönelik çözümleri vardır. bunda Java Bu eğitimde, iki dizeyi karşılaştırmak için kullanabileceğiniz farklı yöntemleri öğreneceksiniz.

Yöntem 1: String equals() yöntemi

MKS Java dizi eşittir() yöntemi iki dize nesnesini eşit dize değerleri açısından karşılaştırır.

Sözdizimi:

public boolean equals(Object anObject)

equals() yöntemi parametreleri:

anObject – Dizeleri karşılaştırmak için kullanılan bağımsız değişken dizesi.

equals() yöntemi dönüş türleri

  • Sağlanan dize değişmezi ilk dizeyle aynıysa true değerini döndürür.
  • İlk dize argüman dizesiyle aynı değilse false değerini döndürür.

Örnek:

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

Beklenen çıktı:

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

Açıklama:

  • Belirtilen nesnenin durumu farklı olduğundan son çıktıda false hatası aldınız.

not: Büyük/küçük harfe duyarlı dize karşılaştırması için dize eşittir yöntemini kullanın. Dize nesnelerini farklı dize değerleriyle karşılaştırmak için "equalsIgnoreCase" yöntemini kullanın.

Yöntem 2: Objects equals() yöntemi

MKS Java Nesneler eşittir() metodu, aynı değerlere sahip olup olmadıklarını bulmak için iki dize nesnesini karşılaştırır.

Sözdizimi:

public static boolean equals(Object a, Object b)

equals() yöntemi parametreleri

a – İlk dize nesnesi için bağımsız değişken dizesi.

b – İkinci dize nesnesi için bağımsız değişken dizesi.

equals() yöntemi dönüş türleri

  • Dize değişmezleri eşitse true değerini döndürür. İki bağımsız değişkende boş bir değerin iletilmesi de doğru değerini döndürecektir.
  • Dize değişmezleri eşit değilse false değerini döndürür.

Örnek:

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

Çıktı:

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

Açıklama:

Bu örnekte, karşılaştırılan dizeler eşit olduğundan çıktının true boolean değeri olduğunu görebilirsiniz.

Yöntem 3: String CompareTo() yöntemi

MKS Java Dize karşılaştırma() yöntem iki dizeyi alfabetik sırayla karşılaştırır. Genellikle leksikografik sıra olarak adlandırılır.

Sözdizimi:

public int compareTo(String str)

CompareTo() yöntem parametreleri

str – Geçerli dizeyle karşılaştırılacak dize.

CompareTo() yöntemi döndürür

  • 0 – Belirtilen nesne geçerli dizeye eşitse sıfırı döndürür.
  • < 0 – Bu dize belirtilen nesneden küçükse sıfırdan küçük bir sayı döndürür.
  • > 0 – Bu dize sağlanan dizeyi aşarsa sıfırdan büyük bir sayı döndürür.

Örnek:

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

Beklenen çıktı:

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

Açıklama:

Birinci ve ikinci dizeler eşit olduğundan ilk sonuç sıfır değerini döndürür.

Karakterler farklı olduğundan ikinci sonuç otuz iki değerini döndürür.

Not: Vakaları yok saymak için “compareToIgnoreCase” yöntemini kullanabilirsiniz.

Yöntem 4: StringUtils equals() yöntemi

MKS Java StringUtils eşittir() yöntem iki karakter dizisinin eşitliğini karşılaştırır.

Programınıza “org.Apache.commons.lang3” kütüphanesini eklediğinizden emin olun. Bu, StringUtil yöntemlerini kullanarak dizeleri karşılaştırmanıza olanak tanır.

Maven projeleri için bunu kullanın rehberlik Kütüphaneyi projeye eklemek için.

Ancak kütüphaneyi herhangi bir derleme aracı olmadan eklemek istiyorsanız bunu kullanın. rehberlik.

Sözdizimi:

public static boolean equals(CharSequnce cs1, CharSequence cs2)

StringUtils equals() yöntemi parametreleri

  • cs1 – İlk argüman için bir karakter dizisi.
  • cs2 – İkinci argüman için bir karakter dizisi.

StringUtils equals() yöntemi döndürür

  • Dize karşılaştırması eşitse true değerini döndürür. İki bağımsız değişkende boş bir değer iletirseniz geçerlidir.
  • Dize karşılaştırması eşit değilse false değerini döndürür.

Örnek:

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

Çıktı:

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

Açıklama:

Birinci ve ikinci dizelerin içerikleri eşit olduğundan sonuç true değerini döndürür.

Büyük/küçük harf durumunu yok saymak için “equalsIgnoreCase” yöntemini kullanabilirsiniz.

Yöntem 5: StringUtils equalsAny() yöntemi

MKS Java StringUtils equalsAny() yöntem, argümanlarda bir dizenin olup olmadığını kontrol eder.

Sözdizimi:

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

StringUtils equalsAny() yöntemi parametreleri

  • string – İlk bağımsız değişkenin dize değeri. Bağımsız değişken null değere de sahip olabilir.
  • searchStrings – Yöntemin, ilk bağımsız değişken dizesinin mevcut olup olmadığını bulmasına yönelik bir dizi dize bağımsız değişkeni.

StringUtils equalsAny() yöntemi döndürür

  • Eşleşecek dize, arama dizelerinin değişken sayısında mevcutsa true değerini döndürür. Bu, her iki bağımsız değişkenin de boş olması durumunda geçerlidir.
  • Eşleşecek dize, arama dizelerinin değişken sayısındaki herhangi bir dizeyle eşleşmezse false değerini döndürür.

Örnek:

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

Çıktı:

is Guru99 available: true
is GURU99 available: false

Açıklama:

Birinci dizenin ve ikinci dizenin içerikleri eşit olduğundan sonuç true değerini döndürür. Büyük/küçük harf durumunu yok saymak için “equalsAnyIgnoreCase” yöntemini kullanabilirsiniz.

Yöntem 6: == operatörünü kullanma

Dizelerdeki == operatörü, nesne referanslarının aynı adrese sahip olup olmadığını kontrol eder.

Örnek:

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

Beklenen çıktı:

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

Açıklama:

  • İlk sonuç true boolean değerini döndürür. Aynı içeriğe sahip dizeler aynı dize havuzuna eklenir, dolayısıyla dize bir adresi paylaşır.
  • İkinci sonuç false boolean değerini döndürür. Nesnelerin farklı içerikleri vardır ve bu da başka dize havuzlarıyla sonuçlanır. Bu, dizelerin ayrı nesne başvurularına sahip olduğu anlamına gelir; dolayısıyla çıktı yanlıştır.

Yöntem 7: İki Dizeyi Karşılaştırmak için özel bir yöntem oluşturma Java

İki dizeyi leksikografik sırayı kullanarak karşılaştıran bir yöntem oluşturun.

Sözdizimi:

public static int compareTwoStrings(String str1, String str2)

Özel yöntem parametreleri

  • str1 – Karşılaştırılacak dize.
  • str2 – Karşılaştırılacak dize.

Özel yöntem getirileri

  • 0 – İlk dize ikinci dizeye eşitse sıfırı döndürür.
  • < 0 – İlk dize ikinci dizeden küçükse sıfırdan küçük bir sayı döndürür.
  • > 0 – İlk dize ikinci dizeden büyükse sıfırdan büyük bir sayı döndürür.

Örnek:

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

Beklenen çıktı:

is Guru99 equal to Guru99: 0

Açıklama:

Sonuç sıfır değeri döndürdü; bu, özel işlevin beklendiği gibi çalıştığı anlamına gelir.

Özet:

MKS Java İki dizeyi karşılaştırma yönteminin kullanımı aşağıdaki faktörlere bağlıdır.

  • Yönteminiz üzerinde kontrol sahibi olmayı arzulayın. Bu durumda özel bir yöntem oluşturun.
  • Eski kodu kullanamazsınız. ile Java 6 ve daha düşük.
  • Optimum performansa sahip yöntem.
  • Üzerinde çalıştığınız veri türü. Örneğin, bir dizi değişken bağımsız değişkenden bir dizeyi eşleştirmek.
  • Dış kaynaklı kütüphanenin sağladığı özellikler. Örneğin, StringUtils kitaplığı dizeleri karşılaştırmak için çeşitli yöntemler sağlar.

Bu yazıyı şu şekilde özetleyin: