Bazı durumlarda elimizdeki iki liste arasındaki ortak elemanları ya da ortak olmayan elemanları elde etmemiz gerekebilir. Ben de bu yazıda bu iki durumu nasıl gerçekleştirebiliriz onu anlatmaya çalışacağım.

Şimdi bizim şu şekilde oluşturduğumuz ve Integer tipinde veri tutan iki adet listemiz olsun.

import java.util.ArrayList;
import java.util.List;

public class CommonAndNotCommon {
	public static void main(String[] args) {
		List<Integer> list1 = new ArrayList<>();
		list1.add(1);
		list1.add(3);
		list1.add(5);
		
		List<Integer> list2 = new ArrayList<>();
		list2.add(3);
		list2.add(5);
		list2.add(7);
	}
}

Öncelikle bu listedeki ortak elemanları nasıl edeceğimize bakalım. Collection framework içerisinde yer alan retainAll metodu bu iş için çözümümüz olacak. Hemen kodumuzu şu şekilde güncelleyelim:

import java.util.ArrayList;
import java.util.List;

public class CommonAndNotCommon {
	public static void main(String[] args) {
		List<Integer> list1 = new ArrayList<>();
		list1.add(1);
		list1.add(3);
		list1.add(5);
		
		List<Integer> list2 = new ArrayList<>();
		list2.add(3);
		list2.add(5);
		list2.add(7);
		
		List<Integer> commonElements = new ArrayList<>(list1);
		commonElements.retainAll(list2);
		
		commonElements.forEach((element)->{System.out.println(element);});	
	}
}

İlk olarak commonElements listesini ArrayList sınıfının yapılandırıcısına list1 listesini parametre olarak geçirip oluşturuyoruz. Bu durumda oluşan commonElements listesi list1 ile aynı oluyor. Daha sonra commonElements.retainAll(list2); diyerek commonElements ve list2 içerisinde ortak olan elamanların commonElements listesinde kalmasını ve ortak olmayan elemanların commonElements listesinden silinmesini söylüyoruz. Son aşamada ise ekrana yazdırıyoruz. Ekran çıktımız da şöyle:

İki listedeki ortak değerler olan 3 ve 5 liste içerisinde yer almış gördüğümüz gibi.

Şimdi bir de aynı olmayan elemanları nasıl edinebiliriz ona bakalım. Eğer ki list1’de olup list2’de olmayan elemanları istiyorsak şu şekilde olabilir kodumuz:

import java.util.ArrayList;
import java.util.List;

public class CommonAndNotCommon {
	public static void main(String[] args) {
		List<Integer> list1 = new ArrayList<>();
		list1.add(1);
		list1.add(3);
		list1.add(5);

		List<Integer> list2 = new ArrayList<>();
		list2.add(3);
		list2.add(5);
		list2.add(7);

		// List<Integer> commonElements = new ArrayList<>(list1);
		// commonElements.retainAll(list2);
		//
		// commonElements.forEach((element) -> {
		// System.out.println(element);
		// });

		List<Integer> notCommonElements = new ArrayList<>(list1);
		notCommonElements.removeAll(list2);
		notCommonElements.forEach(element -> {
			System.out.println(element);
		});
	}
}

Ekran çıktımız da şöyle:

Eğer list2’de olup da list1’de olmayan elemanları istersek de kodun son kısmındaki list1 ve list2’nin yerlerini değiştirip şöyle güncellememiz yeterli:

List<Integer> notCommonElements = new ArrayList<>(list2);
		notCommonElements.removeAll(list1);
		notCommonElements.forEach(element -> {
			System.out.println(element);
		});

Konsolda list2’de olup da list1’de olmayan 7 elemanını görüyoruz.

Bu yazıda iki liste arasında ortak olan ve ortak olmayan elemanları bulmayı görmüş olduk. Başka bir yazıda görüşmek üzere sağlıcakla kalın.

Selam ve Sevgilerimle