[Java] 컬렉션(Set) : HashSet, TreeSet, LinkedHashSet

정재현·2024년 1월 3일

Java

목록 보기
21/43
post-thumbnail

Set

  • 생성자가 없는 인터페이스
    • HashSet, TreeSet등으로 응용하여 사용 가능
    • 생성자가 존재하는 클래스인 HashSet 를 사용하여 Set 를 생성
  • 순서가 없는 데이터의 집합 (데이터 중복 허용 안함)
    • 순서없고 중복없는 배열
  • 중복을 허용하지 않도록 유지 가능

사용할 때

  • 순서가 없고, 중복을 허용하지 않을 때

기능

  • 선언 : Set<Integer> intSet 형태로 선언
  • 생성 : new HashSet<Integer>(); 형태로 생성

주요 기능

  • 추가 : add(추가할 값) 형태로 값을 맨 위에 추가
  • 조회 : get(초회할 순번) 형태로 순번에 있는 값을 조회
  • 삭제 : remove(삭제할 값) 형태로 삭제할 값을 직접 지정
  • 포함확인 : contains(포함확인 할 값) 형태로 해당값이 포함되어있는지 boolean 값으로 응답 받음

Set의 자식 클래스

  • HashSet : 가장 빠르며 순서를 전혀 예측할 수 없음
  • TreeSet : 정렬된 순서대로 보관하며 정렬 방법을 지정할 수 있음
  • LinkedHashSet : 추가된 순서, 또는 가장 최근에 접근한 순서대로 접근 가능
    즉, 보통 HashSet 을 쓰는데 순서보장이 필요하면 LinkedHashSet 을 주로 사용

예시

// Set 
// (사용하기 위해선 import java.util.Set; 와 java.util.HashSet; 를 추가해야 함)
import java.util.HashSet;
import java.util.Set;

public class Main {

	public static void main(String[] args) {
		Set<Integer> intSet = new HashSet<Integer>(); // 선언 및 생성

		intSet.add(1);
		intSet.add(2);
		intSet.add(3);
		intSet.add(3); // 중복된 값은 덮어씁니다.
		intSet.add(3); // 중복된 값은 덮어씁니다.

		for (Integer value : intSet) {
			System.out.println(value); // 1,2,3 출력
		}

		// contains()
		System.out.println(intSet.contains(2)); // true 출력
		System.out.println(intSet.contains(4)); // false 출력

		// remove()
		intSet.remove(3); // 3 삭제

		for (Integer value : intSet) {
			System.out.println(value); // 1,2 출력
		}
	}
}

profile
공부 기록 보관소

0개의 댓글