집합이란 ?
리스트나 배열과 비교했을때 다음과 같은 특징이 있음.
- 순서가 없다
- 중복을 허용하지 않는다
- 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);