Java HashSet 합집합, 차집합, 교집합, 부분집합





코드

package pk;

import java.util.HashSet;

public class Test {

	public static void main(String[] args) {
		HashSet<Integer> ss = new HashSet();	// 1 2 3 4
		HashSet<Integer> ss2 = new HashSet();	// 3 4 5 6
		HashSet<Integer> ss3 = new HashSet();	// 1 2
		
		ss.add(1);
		ss.add(2);
		ss.add(3);
		ss.add(4);
		
		ss2.add(3);
		ss2.add(4);
		ss2.add(5);
		ss2.add(6);
		
		ss3.add(1);
		ss3.add(2);
		
		/*
		ss.addAll(ss2);	// (1 2 3 4) ∪ (3 4 5 6) = (1 2 3 4 5 6) 합집합
		for(int n : ss) System.out.print(n + " ");
		System.out.println();
		*/
		
		/*
		ss.retainAll(ss2);	// (1 2 3 4) ∩ (3 4 5 6) = (3 4) 교집합
		for(int n : ss) System.out.print(n + " ");
		System.out.println();
		*/
		
		/*
		ss.removeAll(ss2);	// (1 2 3 4) - (3 4 5 6) = (1 2) 차집합
		for(int n : ss) System.out.print(n + " ");
		System.out.println();
		*/
		
		/*
		System.out.println(ss.containsAll(ss2));	// (1 2 3 4) ≠ (3 4 5 6)
		System.out.println(ss.containsAll(ss3));	// (1 2 3 4) ⊃ (1 2)
		*/
	}

}





HashSet 기본 사용법


링크

[JAVA/심화] - Java HashSet - 집합 삽입, 삭제, 탐색







addAll() : 합집합

합집합

- 두 집합의 원소들을 합한 집합을 만든다.

집합이므로 중복된 원소는 1개만 포함된다.





retainAll() : 교집합

교집합

- 두 집합에서 동일하게 포함하고 있는 원소만 있는 집합을 만든다.





removeAll() : 차집합

차집합

- 인수로 주는 집합의 포함된 동일한 원소들을 제거한다.




containsAll() : 집합 포함 여부(부분 집합)

부분 집합

- 인수로 주는 집합이 부분 집합이면 true이다.


- 해당 코드는 위쪽은 false가 아래는 true가 도출된다.


※ contains와 혼동하면 안된다.







Java HashSet - 집합 삽입, 삭제, 탐색





결과

결과





코드

package pk;

import java.util.HashSet;
import java.util.Iterator;

public class Test {

	public static void main(String[] args) {
		HashSet<String> ss = new HashSet<String>();
		
		ss.add("가");
		ss.add("나");
		ss.add("다");
		ss.add("라");
		ss.add("가");
		
		for(String s : ss) {
			System.out.print(s + " ");
			if(s.equals("라")) ss.remove(s);
		}
		
		System.out.println();
		Iterator<String> it = ss.iterator();
		while(it.hasNext()) {
			String s = it.next();
			System.out.print(s + " ");
			if(s.equals("다")) it.remove();
		}
		
		System.out.println();
		for(String s : ss) {
			System.out.print(s + " ");
		}
		System.out.println();
		System.out.println("길이 : " + ss.size());
		System.out.println("'가' 포함 여부 : " + ss.contains("가"));
		
	}

}




HashSet : 저장 순서가 유지되지 않으며 동일한 값을 1개만 저장할 수 있다.

중복이 없고, 순서가 없으므로 집합으로 볼 수 있다.

ex) 결과 1라인을 보면 중복이 허용안되며 순서도 무작위인걸 확인 가능하다.





boolean add(E e) : 원소 추가

- 리턴형이 boolean형으로 저장이 완료되면 true를, 중복된 원소라 저장이 실패한다면 false를 리턴한다.




boolean remove(Object o) : 원소 제거

- 성공적으로 제거하면 true를 실패하면 false를 리턴한다.




isEmpty() : 비었는지 검사




size() : 개수를 구함




boolean contains(Object o) : 포함 여부 확인

- 인수로 준 객체가 존재하는지 검사한다.




iterator() : iterator 객체를 얻음




탐색

1. for each문을 사용


2. Iterator를 사용

ㄴ boolean hasNext() : 가져올 객체가 있는지 없는지 검사한다.

ㄴ E next() : 한칸 다음으로 이동 후 그 객체 값을 리턴한다.


ex) 0 "가" "나 "다" "라"

이러한 set이 있다면 처음 next()를 실행하였을 경우 0에서 "가" 로 이동한 후 "가"를 리턴하게 된다.






+) 추가


- HashSet은 객체를 비교할 시 hashCode()와 equals() 메소드들을 재정의하여 조건을 지정해 주어야 한다.



링크

[JAVA/심화] - Java HashSet 합집합, 차집합, 교집합, 부분집합






+ Recent posts