Java’da iki dizinin elemanlarını karşılaştırarak dizilerin aynı mı farklı mı olduğunu öğrenmek için aşağıdaki algoritma ile çözüme ulaşabilirsiniz.
Öncelikle basit mantıkta iki dizinin aynı olup olmadığını sorgulayarak işleme başlayalım ve sonucu görelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 | class JavaOrnekleri { public static void main (String[] args) { int arr1[] = {1, 2, 3}; int arr2[] = {1, 2, 3}; if (arr1 == arr2) // iki dizi aynı ise true dönecektir. Fakat burada referansları farklı olduğu için aynı değil yazacak System.out.println("Diziler Aynı"); else System.out.println("Diziler Aynı Değil"); } } |
Çıktı:
1 2 3 | Diziler Aynı Değil |
Java’da, diziler birinci sınıf nesnelerdir. Yukarıdaki programda, arr1 ve arr2 iki farklı nesneye iki referanstır. Dolayısıyla arr1 ve arr2‘yi karşılaştırdığımızda iki referans değişkeni karşılaştırılır, bu nedenle çıktıyı “Dizler Aynı Değil” olarak alırız (Daha fazla örnek için buna bakın).
Dizi içerikleri nasıl karşılaştırılır?
Basit bir yol, bir döngü çalıştırmak ve öğeleri tek tek karşılaştırmaktır. Java, iki diziyi karşılaştırmak için doğrudan Arrays.equals() yöntemi sağlar. Aslında, Arrays sınıfında farklı ilkel türler (int, char, ..vb) ve biri Nesne türü (Java’daki tüm sınıfların temelidir) için equals() yöntemlerinin bir listesi vardır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | import java.util.Arrays; class JavaOrnekleri { public static void main (String[] args) { int arr1[] = {1, 2, 3}; int arr2[] = {1, 2, 3}; if (Arrays.equals(arr1, arr2)) System.out.println("Aynı"); else System.out.println("Aynı Değil"); } } |
Çıktı:
1 2 3 | Aynı |
Arrays.equals() derin bir karşılaştırma yapamaz. Java, bu Arrays.deepEquals() için derin bir karşılaştırma yapan başka bir yöntem sağlar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import java.util.Arrays; class JavaOrnekleri { public static void main (String[] args) { int intarr1[] = {1, 2, 3}; int intarr2[] = {1, 2, 3}; Object[] arr1 = {intarr1}; Object[] arr2 = {intarr2}; if (Arrays.deepEquals(arr1, arr2)) System.out.println("Aynı"); else System.out.println("Aynı Değiş"); } } |
Sahip olabileceği herhangi bir özel equals() yöntemini kullanarak iki nesneyi karşılaştırır (Object.equals() dışında bir equals() yöntemi uygulanmışsa). Değilse, bu yöntem daha sonra nesneleri yinelemeli olarak alanlara göre karşılaştırmaya devam edecektir. Her alanla karşılaşıldıkça, türetilmiş equals() varsa kullanmaya çalışır, aksi takdirde daha fazla geri çekmeye devam eder.
Yorum Yap