Elimizde bir tane kisi classı var ve diyelim ad,soyad gibi iki tane nesneleri var.class içindeki get ve set metotları da bu nesnelere erişimi sağlıyor.
Listkisilerim = new ArrayList (); for(int i=0;i<=2;i++){ Kisi k = new Kisi(); k.setAd("Mehmet"+i); k.setSoyad("FASIL"+i); kisilerim.add(k); }
Yukarıdaki arraylist objeden farkını almak istediğim yeni bir arraylist obje daha yapayım
ListyeniKisiler = new ArrayList (); for(int i=0;i<1;i++){ Kisi nk = new Kisi(); nk.setAd("Mehmet"+i); nk.setSoyad("FASIL"+i); kisilerim.add(nk); }
here is the magic:)
kisilerim.removeAll(yeniKisiler);
Apache Commons’a ait CollectionUtils ile de List interface’inden türeyen sınıfların kesişim veya farklarını alabilirsin. Magic is not reinvetion the wheel.
Bu kodu androiddde kullandım abi. o yüzden kullandığım sınıflar içinden en az maliyetli olanı tercih etmiştim.
“The good thing about reinventing the wheel is that you can get a round one.”
Douglas Crockford – In response to David Winer
Burada önemli olan nesnelerin equals() ve hashCode() metotlarını implement etmektir. Yoksa bu şekilde oluşturduğun iki nesne her ne kadar tüm fieldları string olarak aynı dahi olsa aynı değil farklı nesnelerdir. Java da Collections Api nesnelerin aynı olup olmadığını anlamak için equals() ve hashCode() metotlarına bakar. Dolayısıyla iki nesnenin neye göre aynı olup neye göre olmayacağını bizim equals() ve hashCode() metotlarını implement ederek belirlememiz gerekir. Bu konuya dikkat edelim sonra saç baş yolmayalım 🙂