SeouliteLab

[Java/자바] 두 개의 리스트의 교집합 찾기 본문

프로그래밍

[Java/자바] 두 개의 리스트의 교집합 찾기

Seoulite Lab 2024. 3. 7. 09:17

Java에서 두 개의 리스트에서 공통 요소, 즉 교집합을 찾아야 할 때가 있습니다. 이 블로그 포스트에서는 Java를 사용하여 두 개의 리스트의 교집합을 찾는 여러 가지 방법을 알아보겠습니다. 각 예제는 해당하는 방법으로 교집합을 찾는 방법을 보여줍니다.

예제 1: 반복문과 contains() 메서드 사용

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

List<String> list1 = new ArrayList<>();
list1.add("apple");
list1.add("banana");
list1.add("orange");

List<String> list2 = new ArrayList<>();
list2.add("banana");
list2.add("grape");

List<String> intersection = new ArrayList<>();
for (String item : list1) {
    if (list2.contains(item)) {
        intersection.add(item);
    }
}

System.out.println("Intersection: " + intersection);

위의 예제에서는 반복문을 사용하여 첫 번째 리스트의 각 요소가 두 번째 리스트에 포함되어 있는지 확인하고 교집합을 만듭니다. 이 방법은 간단하지만 두 번째 리스트의 요소를 반복할 때마다 contains() 메서드를 호출하므로 효율적이지 않을 수 있습니다.

예제 2: retainAll() 메서드 사용

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

List<String> list1 = new ArrayList<>();
list1.add("apple");
list1.add("banana");
list1.add("orange");

List<String> list2 = new ArrayList<>();
list2.add("banana");
list2.add("grape");

list1.retainAll(list2);

System.out.println("Intersection: " + list1);

두 번째 예제에서는 retainAll() 메서드를 사용하여 첫 번째 리스트를 두 번째 리스트와 공통 요소만 남기는 방법을 보여줍니다. 이 방법은 두 번째 리스트의 요소를 반복하지 않고도 공통 요소를 찾을 수 있어 효율적입니다.