logo

Java'da İki Dizi Nasıl Karşılaştırılır?

Java'da şunları yapabiliriz: iki diziyi karşılaştır dizinin her öğesini karşılaştırarak. Java Diziler sınıf, aşağıdaki işlemleri yapmak için kullanılan önceden tanımlanmış iki yöntem sağlar: Java'daki iki diziyi karşılaştırın .

Bu bölümde öğreneceğiz iki Dizi nasıl karşılaştırılır kullanarak Diziler.equals() yöntem ve Arrays.deepEquals() yöntem. Bununla birlikte şunları da öğreneceğiz iki dizi arasında derin bir karşılaştırma nasıl yapılır doğru örneklerle.

Aşağıdaki durumlarda iki dizi eşittir:

  • Aynı türdendirler.
  • Eşit sayıda elemente sahiptirler.
  • Her iki dizideki karşılık gelen öğe çiftleri eşit olmalıdır.
  • Elemanların sırası aynı olmalıdır.
  • İki dizi referansı boşsa eşittir.

Konuya geçmeden önce öncelikle aşağıdaki örneği inceleyin ve çıktıyı tahmin edin.

DiziEşitlerÖrnek1.java

c++'da xor
 public class ArrayEqualsExample1 { public static void main (String[] args) { //defining arrays to be compare int[] a1 = new int[] {1, 2, 3, 4, 5, 6, 7, 8}; int[] a2 = new int[] {1, 2, 3, 4, 5, 6, 7, 8}; //comparing references using == operator //works the same as a1.equals(a2) if (a1 == a2) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

Çıktı:

 Arrays are not equal. 

Yukarıdaki örnekte a1 ve a2, iki farklı nesnenin iki referansıdır. İki referans değişkenini karşılaştırdığımızda çıktıyı alırız Diziler eşit değildir, her iki dizi de eşit uzunluktadır ve aynı öğelere sahiptir. Eşittir (==) operatörü bunları bir nesne olarak karşılaştırdığı için istenen çıktıyı alamıyoruz.

Artık yalnızca iki diziyi karşılaştırma seçeneğimiz var; dizinin içeriğini (öğelerini) karşılaştırın . Dizi içeriklerinin nasıl karşılaştırılacağını görelim.

Unsurları tek tek karşılaştırırsak iyi olur. Java dizisinin içeriğini karşılaştırmak için Diziler sınıf, iki diziyi karşılaştırmak için aşağıdaki iki yöntemi sağlar:

bir komut arp
  • equals() Yöntem
  • deepEquals() Yöntemi

Arrays.equals() Yöntem

Java Diziler sınıf şunları sağlar eşittir() iki diziyi karşılaştırma yöntemi. Bir dizinin her değeri üzerinde yinelenir ve equals() yöntemini kullanarak öğeleri karşılaştırır.

Sözdizimi:

 public static boolean equals(int[] a1, int[] a2) 

Karşılaştırılacak iki a1 ve a2 dizisini ayrıştırır. Diziler eşitse yöntem true değerini döndürür, aksi takdirde false değerini döndürür. Diziler sınıfı farklı ilkel türler için aşırı yüklenmiş equals() yönteminin bir listesi ve bir Object türü için bir liste vardır.

java'daki csv dosyasından okuyun

Not: Nesne dizisini kullanırken equals() yöntemini geçersiz kılmayı unutmayın. Aksi takdirde, Object sınıfının equals() yönteminin döndürdüğü çıktıyı alırız.

DiziEşitlerÖrnek2.java

 import java.util.Arrays; public class ArrayEqualsExample2 { public static void main (String[] args) { //defining array to compare int[] array1 = new int[] {'a', 'b', 'c', 'd', 'e'}; int[] array2 = new int[] {'a', 'b', 'c', 'd', 'e'}; //comparing two arrays using equals() method if (Arrays.equals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

Çıktı:

 Arrays are equal. 

Başka bir örnek görelim.

DiziEşitlerÖrnek3.java

 import java.util.Arrays; public class ArrayEqualsExample3 { public static void main (String[] args) { //defining arrays to compare int[] array1 = new int [] {21, 32, 36, 47}; int[] array2 = new int [] {11, 22, 33, 44}; int[] array3 = new int [] {21, 32, 36, 47}; System.out.println('Are array1 and array2 equal?' + Arrays.equals(array1, array2)); System.out.println('Are array1 and array3 equal?' + Arrays.equals(array1, array3)); } } 

Çıktı:

java taraması.sonraki dize
 Are array1 and array2 equal? false Are array1 and array3 equal? true 

Görüyoruz ki Diziler.equals() yöntem dizinin elemanlarını karşılaştırır. Burada, bir dizinin iç içe geçmiş bir diziye veya farklı nesnelere atıfta bulunan ancak aynı değerlere sahip başka referanslara sahip olması durumunda ne olacağı sorusu ortaya çıkar.

Aşağıdaki örnek üzerinden bunu anlayalım.

DiziEşitlerÖrnek4.java

 import java.util.Arrays; public class ArrayEqualsExample4 { public static void main (String[] args) { //defining array to compare String[] inarray1 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; String[] inarray2 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; Object[] array1 = {inarray1}; // array1 have only one element Object[] array2 = {inarray2}; // array2 also have only one element //comparing two arrays using equals() method if (Arrays.equals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

Çıktı:

Nginx
 Arrays are not equal. 

Yukarıdaki örnekte equals() metodunun derin bir karşılaştırma yapamadığını görüyoruz. Bu sorunu çözmek için Java Arrays sınıfı, iki diziyi derinlemesine karşılaştıran başka bir deepEquals() yöntemi sağlar.

Arrays.deepEquals() Yöntem

Java Diziler sınıf başka bir yöntem sağlar deepEquals() diziyi derinlemesine karşılaştırmak için. Burada derinlemesine karşılaştırma, keyfi derinliğe sahip iki iç içe diziyi karşılaştırabileceği anlamına gelir. İki dizi nesne referansı e1 ve e2, aşağıdaki koşullardan herhangi birini taşıyorsa derinden eşittir:

  • e1=e2
  • equals(e2) true değerini döndürür.
  • e1 ve e2'nin her ikisi de aynı ilkel türdeyse Arrays.equals(e1, e2) yönteminin aşırı yüklenmesi true değerini döndürür.
  • e1 ve e2'nin her ikisi de nesne referans türlerinin dizisiyse, Arrays.deepEquals(e1, e2) yöntemi true değerini döndürür.

Sözdizimi:

 public static boolean deepEquals(Object[] a1, Object[] a2) 

Yöntem, karşılaştırılacak iki a1 ve a2 dizisini ayrıştırır. Her iki dizi de derinlemesine eşitse true değerini döndürür, aksi takdirde false değerini döndürür.

Bir program oluşturalım ve iki diziyi derinlemesine karşılaştıralım. deepEquals() Arrays sınıfının yöntemi.

DiziEşitlerÖrnek5.java

 import java.util.Arrays; public class ArrayEqualsExample5 { public static void main (String[] args) { //defining array to compare String[] inarray1 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; String[] inarray2 = new String[] {'mango', 'grapes', 'plum', 'watermelon', 'apple'}; Object[] array1 = {inarray1}; // array1 have only one element Object[] array2 = {inarray2}; // array2 also have only one element //comparing two arrays using equals() method if (Arrays.deepEquals(array1, array2)) System.out.println('Arrays are equal.'); else System.out.println('Arrays are not equal.'); } } 

Çıktı:

 Arrays are equal.