Java'da diziler (vektörler) konusunda çok sayıda örnek paylaşmıştım. Mesela iki dizideki ortak elemanları bulan Java programı örneğinde iki adet dizinin tüm elemanlarını teker teker karşılaştırarak kaç adet elemanın aynı olduğunu bulmuştuk. Bugün ise ik diizinin aynı olup olmadığını (tüm elemanlarının aynı olup olmadığını) kontrol eden bir uygulama yapacağız. Uzun uzun kodlayacak olsaydık önce eleman sayılarının aynı olduğunu kontrol eder, sonra her iki vektörü de sıraya sokarak tüm karşılık gelen elemanların aynı olup olmadıklarını tek bir döngü içinde kontrol ederdik, ama Arrays sınıfında dizilerin aynı olup olmadıklarını kontrol eden bir metod zaten olduğu için bu işlemi manuel yapmamıza gerek kalmıyor: Arrays.equals(dizi1, dizi2)
Örnek: 3 adet dizi tanımlayalım ve bu dizilerden hangilerinin birbiriyle aynı olduklarını kontrol edelim.
int[] dizi1 = new int [] {10, 15, 20, 25};
int[] dizi2 = new int [] {10, 15, 20, 30};
int[] dizi3 = new int [] {10, 15, 20, 25};
if (Arrays.equals(dizi1, dizi2))
System.out.println("dizi 1 ile dizi 2 aynıdır");
if (Arrays.equals(dizi1, dizi3))
System.out.println("dizi 1 ile dizi 3 aynıdır");
if (Arrays.equals(dizi2, dizi3))
System.out.println("dizi 2 ile dizi 3 aynıdır");
Çıktı:
dizi 1 ile dizi 3 aynıdır
Java ne akıllı program değil mi, iki diziyi verir vermez aynı olup olmadıklarını şakkadanak çözdü. Şimdi bir de dizi elemanlarının yerlrini değiştirerek bakalım Java gerçekten de o kadar akıllı mı.
Örnek 2:
int[] dizi1 = new int [] {10, 15, 25, 20};
int[] dizi2 = new int [] {10, 15, 20, 25};
if (Arrays.equals(dizi1, dizi2))
System.out.println("dizi 1 ile dizi 2 aynıdır");
else
System.out.println("dizi 1 ile dizi 2 aynı değildir");
Çıktı:
dizi 1 ile dizi 2 aynı değildir
Demek ki Java maalesef o kadar da akıllı değilmiş, sırası değiştirilmiş 2 adet dizi elemanını gözden kaçırdı. Peki sıralayarak tekrar denesek problem çözülür mü?
Örnek 3:
int[] dizi1 = new int [] {10, 15, 25, 20};
int[] dizi2 = new int [] {10, 15, 20, 25};
Arrays.parallelSort(dizi1);
Arrays.parallelSort(dizi2);
if (Arrays.equals(dizi1, dizi2))
System.out.println("sıralanmış dizi 1 ile sıralanmış dizi 2 aynıdır");
else
System.out.println("dizi 1 ile dizi 2 aynı değildir");
Çıktı:
sıralanmış dizi 1 ile sıralanmış dizi 2 aynıdır
Sıralamayı yapınca nasıl da hemen aybı olduklarını fark etti değil mi :) Peki acaba biz bir hata yapıyor olabilir miyiz? Ya Arrays.equals iki dizinin eleman sırasına kadar aynı olup olmadığını kontrol eden metodsa? O zaman farklı sıradaki dizilerin de elemanlarının aynı olup olmadığını kontrol eden bir metod olmalı değil mi? Açıkçası diziler maalesef metodlar açısından o kadar zengin değiller. Bu gibi işlemler için ArrayList kullanmak daha mantıklı oluyor. Bu arada Java'da sıralanmamış ArrayList'lerin karşılaştırılması ile ilgili de bir metod var: ArrayList.containsAll() matodu.