자바 공부 8 : 자료형 - 집합

친환경 개발자
|2024. 1. 23. 21:43

집합이란 ? 

 

리스트나 배열과 비교했을때  다음과 같은 특징이 있음.

 

- 순서가 없다

 

- 중복을 허용하지 않는다

 

- HashSet / LinkedHashSet / TreeSet 등의 종류가 있다.

 

- 해당 특징을 이용해 교집합, 합집합, 차집합을 구할 때 유용하게 쓰인다.

 

 

 

HashSet : 가장 대표형태

 

- HashSet 패키지를 임포트해야한다.    >>    import java.util.HashSet;

 

 

 

● 교집합 구하기 : retainAll 메서드 이용

 

 // 교집합 구하기 : retainAll()
        HashSet<Integer> s1 = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5, 6));
        HashSet<Integer> s2 = new HashSet<>(Arrays.asList(4, 5, 6, 7, 8, 9));

        HashSet<Integer> intersection = new HashSet<>(s1); // s1데이터 유지를 위해 임시 변수 생성
        intersection.retainAll(s2); // 교집합 수행
        System.out.println(intersection);  // [4, 5, 6] 출력
        System.out.println(s2);
        System.out.println(s1);

 

 

 

 

 

 

 

● 합집합 구하기 : addAll 메서드 이용

 

//합집합 구하기 : addAll()
        HashSet<Integer> s1 = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5, 6));
        HashSet<Integer> s2 = new HashSet<>(Arrays.asList(4, 5, 6, 7, 8, 9));

        HashSet<Integer> union = new HashSet<>(s1); // s1데이터 유지를 위해 임시 변수 생성
        union.addAll(s2); // 합집합 수행
        System.out.println(union);  // [1, 2, 3, 4, 5, 6, 7, 8, 9] 출력

 

 

 

 

 

 

 

 

● 차집합 구하기 : removeAll 메서드 이용

 

 

  //차집합 구하기: removeAll
        HashSet<Integer> s1 = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5, 6));
        HashSet<Integer> s2 = new HashSet<>(Arrays.asList(4, 5, 6, 7, 8, 9));

        HashSet<Integer> substract = new HashSet<>(s1); // s1데이터 유지를 위해 임시 변수 생성
        substract.removeAll(s2); // 차집합 수행
        System.out.println(substract);  // [1, 2, 3] 출력

 

 

 

 

 

● 주요 사용 메서드

 

- add : 집합자료에 값 추가

 

     ex)     HashSet<String> set2 = new HashSet<>();
              set2.add("jump");
              set2.add(" to");
              set2.add(" java");
             System.out.println(set2);

 

 

- addAll : 한번에 여러개 추가

 

     ex)      HashSet<String> set3 = new HashSet<>();
                set3.add("jump");
                set3.addAll(Arrays.asList("To","Java"));
                System.out.println(set3);

 

 

- remove : 특정 값 제거할 때 사용

 

     ex)       HashSet<String> set3 = new HashSet<>();
                 set3.remove("To");
                 System.out.println(set3);