세트 생성
Set<String> set = new HashSet<String>();
요소 추가
set.add("일"); set.add("월"); set.add("화"); set.add("수"); set.add("수"); // 중복 안됨. System.out.println(set);
출력:
[월, 화, 수, 일]
요소 제거
boolean result = set.remove("일"); System.out.println(result);
출력:
true
[월, 화, 수]
세트의 초기화
- 리스트를 세트로 변환하는 방식으로 초기화 진행
Set<String> set = new HashSet<String>(Arrays.asList("일", "월", "화", "수"));
세트의 길이
int size = set.size(); System.out.println(size);
출력:
4
향상 for문 가능(인덱스가 없으므로 일반 for문은 불가능)
for(String element : set) { System.out.println(element); }
출력:
월
화
수
일
집합
Set<Integer> set1 = new HashSet<Integer>(Arrays.asList(1, 2, 3, 4, 5)); Set<Integer> set2 = new HashSet<Integer>(Arrays.asList(3, 4, 5, 6, 7)); Set<Integer> set3 = new HashSet<Integer>(Arrays.asList(6, 7));
교집합
set1.retainAll(set2); System.out.println(set1);
출력:
[3, 4, 5]
- 교집합 결과는 retainAll() 메소드를 호출한 Set에 저장
합집합
set1.addAll(set2); System.out.println(set1);
출력:
[1, 2, 3, 4, 5, 6, 7]
- 합집합 결과는 addAll() 메소드를 호출한 Set에 저장
차집합
set1.removeAll(set2); System.out.println(set1);
출력:
[1, 2]
부분집합 여부 판단
boolean result1 = set1.containsAll(set3); // set3가 set1의 부분집합이면 true boolean result2 = set2.containsAll(set3); // set3가 set2의 부분집합이면 true System.out.println(result1); System.out.println(result2);
출력:
false
true
중복 요소가 있는 리스트 -> 세트 변환 -> 다시 리스트로 변환
List<String> list = new ArrayList<String>(); list.add("일"); list.add("월"); list.add("화"); list.add("화"); // 중복 요소가 있는 리스트 Set<String> set = new HashSet<String>(list); // 세트 변환 list.clear(); // list 요소 모두 제거 list = new ArrayList<String>(set); // 다시 리스트로 변환 System.out.println(list);
출력:
[월, 화, 일]