컬렉션 프레임워크 - Set

KIHYUK MOON·2023년 1월 31일
0
post-thumbnail
post-custom-banner

순서와 상관없이 중복을 허용하지 않는 경우에는 Set 인터페이스를 구현한 클래스를 사용한다.

HashSet 클래스

  • 요소의 순서를 유지하지 않는다.
  • 요소의 중복을 허용하지 않는다 (hashCode() 리턴값을 사용하여 객체가 동일한지 판단)
  • 수학의 집합과 유사한 개념

구조

교집합, 합집합, 차집합 구하기

교집합

public static void main(String[] args) {
    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));
        s1.retainAll(s2); // 교집합을 수행하는 메소드
        System.out.println(s1);
}

합집합

public static void main(String[] args) {
        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));
        s1.addAll(s2); // 합집합을 수행
        System.out.println(s1);
    }

차집합

public static void main(String[] args) {
    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 생성
    substract.removeAll(s2); // 차집합 수행
    System.out.println(substract);  // [1, 2, 3] 출력
}

관련 메소드

값 추가하기 add

public static void main(String[] args) {
    HashSet<String> set = new HashSet<>();
    set.add("Jump");
    set.add("To");
    set.add("Java");
    System.out.println(set);  // [Java, To, Jump] 출력
}

값 여러개 추가하기 addAll

public static void main(String[] args) {
    HashSet<String> set = new HashSet<>();
    set.add("Jump");
    set.addAll(Arrays.asList("To", "Java"));
    System.out.println(set);  // [Java, To, Jump] 출력
}

특정 값 제거 remove

public static void main(String[] args) {
    HashSet<String> set = new HashSet<>(Arrays.asList("Jump", "To", "Java"));
    set.remove("To");
    System.out.println(set);  // [Java, Jump] 출력
}
profile
개발자 전직중..
post-custom-banner

0개의 댓글