SeouliteLab

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

프로그래밍

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

Seoulite Lab 2024. 3. 7. 09:18

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> difference = new ArrayList<>();
for (String item : list1) {
    if (!list2.contains(item)) {
        difference.add(item);
    }
}

System.out.println("Difference: " + difference);

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

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

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.removeAll(list2);

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

두 번째 예제에서는 removeAll() 메서드를 사용하여 첫 번째 리스트에서 두 번째 리스트와 겹치는 요소를 모두 제거하는 방법을 보여줍니다. 이 방법은 두 번째 리스트와 겹치는 모든 요소를 한 번에 제거하기 때문에 효율적입니다.