[컬렉션 프레임워크] Set

seratpfk·2022년 8월 8일
0

JAVA

목록 보기
85/96

세트 생성

Set<String> set = new HashSet<String>();

요소 추가

set.add("일");
set.add("월");
set.add("화");
set.add("수");
set.add("수"); // 중복 안됨.
System.out.println(set);

출력:
[월, 화, 수, 일]

  • set는 순서(index)가 없다.

요소 제거

		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]

  • 차집합 결과는 removeAll() 메소드를 호출한 Set에 저장

부분집합 여부 판단

		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);

출력:
[월, 화, 일]

0개의 댓글