특징
- 요소의 저장 순서를 유지하지 않는다.
- 같은 요소의 중복 저장을 허용하지 않는다.
Set 인터페이스 메소드
- add(E e)
- clear()
- contains(Object o)
- 해당 집합이 전달된 객체를 포함하고 있는지를 확인한다.
- equals(Object o)
- 해당 집합과 전달된 객체가 같은지를 확인한다.
- isEmpty()
- iterator()
- 해당 집합의 반복자(iterator)를 반환한다.
- remove(Object o)
- size()
- toArray()
- 해당 집합의 모든 요소를 Object 타입의 배열로 반환한다.
HashSet<E> 클래스
- Set 컬렉션 클래스에서 가장 많이 사용되는 클래스 중 하나
- 해시 알고리즘(hash algorithm)을 사용하여 검색 속도가 매우 빠르다.
- 내부적으로 HashMap 인스턴스를 이용하여 요소를 저장한다.
- 요소를 순서에 상관없이 저장하고 중복된 값은 저장하지 않는다.
- JDK 1.2부터 제공
- 만약 요소의 저장 순서를 유지해야 한다면 LinkedHashSet 클래스를 사용하면 된다.
- 사용 예시
해시 알고리즘(hash algorithm)
- 해시 함수(hash function)를 사용하여 데이터를 해시 테이블(hash table)에 저장하고, 다시 그것을 검색하는 알고리즘
- Java에서 해시 알고리즘을 이용한 자료구조는 배열과 연결 리스트로 구현된다.
- 저장할 데이터의 키값을 해시 함수에 넣어 반환되는 값으로 배열의 인덱스를 구한다.
- 그리고서 해당 인덱스에 저장된 연결 리스트에 데이터를 저장하게 된다.
TreeSet<E> 클래스
- 데이터가 정렬된 상태로 저장되는 이진 검색 트리(binary search tree)의 형태로 요소를 저장한다.
- 이진 검색 트리는 데이터를 추가하거나 제거하는 등의 기본 동작 시간이 매우 빠르다.
- NavigableSet 인터페이스를 기존의 이진 검색 트리의 성능을 향상시킨 레드-블랙 트리(Red-Black tree)로 구현한다.
- 요소를 순서에 상관없이 저장하고 중복된 값은 저장하지 않는다.
- JDK 1.2부터 제공된다.
- 사용 예시