어제 오늘 내일

[Java] Collections.disjoint() – 두 컬렉션이 겹치지 않는지 확인하기 본문

IT/Java

[Java] Collections.disjoint() – 두 컬렉션이 겹치지 않는지 확인하기

hi.anna 2025. 9. 10. 12:05

컬렉션을 다루다 보면 두 집합이나 리스트가 공통 원소를 가지고 있는지 확인해야 할 때가 있습니다.
이때 Collections.disjoint() 메서드를 사용하면 아주 간단하게 검사할 수 있습니다.
이 메서드는 두 컬렉션이 서로 겹치는 원소가 있는지 없는지를 간단히 확인할 수 있는 유틸리티입니다.

 

1. 기본 사용법

import java.util.*;

public class DisjointExample1 {
    public static void main(String[] args) {
        List<Integer> list1 = Arrays.asList(1, 2, 3);
        List<Integer> list2 = Arrays.asList(4, 5, 6);

        boolean result = Collections.disjoint(list1, list2);

        System.out.println(result); // true
    }
}

👉 true가 출력됩니다.
즉, list1list2겹치는 원소가 없다는 뜻입니다.

 

2. 공통 원소가 있는 경우

import java.util.*;

public class DisjointExample2 {
    public static void main(String[] args) {
        Set<String> set1 = new HashSet<>(Arrays.asList("apple", "banana", "cherry"));
        Set<String> set2 = new HashSet<>(Arrays.asList("cherry", "mango", "orange"));

        boolean result = Collections.disjoint(set1, set2);

        System.out.println(result); // false
    }
}

👉 false가 출력됩니다.
"cherry"라는 원소가 두 집합에 모두 있기 때문입니다.

 

3. 다양한 컬렉션 타입에서 사용 가능

disjoint()리스트, 집합, 큐 등 모든 컬렉션에서 동작합니다.

import java.util.*;

public class DisjointExample3 {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>(Arrays.asList(1, 2, 3));
        List<Integer> list = Arrays.asList(3, 4, 5);

        System.out.println(Collections.disjoint(queue, list)); // false
    }
}

👉 3이 공통 원소이므로 false 출력.

 

4. 활용 예시

  • 추천 시스템
    • 이미 본 영화 리스트와 새 추천 리스트가 겹치는지 검사
  • 중복 체크
    • 신규 데이터가 기존 데이터셋에 포함되는지 확인
  • 보안/권한 검사
    • 사용자 권한과 필요한 권한 집합이 겹치는지 확인

 

5. 정리

  • Collections.disjoint(Collection<?> c1, Collection<?> c2)
    → 두 컬렉션에 공통 원소가 없으면 true, 있으면 false 반환
  • 모든 컬렉션 타입에서 사용 가능
  • 데이터 교집합 여부를 간단히 확인할 때 유용

👉 두 컬렉션이 겹치지 않는지 확인할 때는 Collections.disjoint()를 쓰자!

 

 

반응형
Comments