1. Set의 개요
<aside>
- Set은 중복을 허용하지 않는다.
- 인덱스를 제공하지 않는다. 기본적으로는 요소의 저장순서를 기억하지 않는다(일부제외).
- 주요 구현 클래스: HashSet, LinkedHashSet, TreeSet
</aside>
2. Set의 주요 메서드
- 추가 : add(E)
- 삭제: remove(Object o)
- 읽기: 자체적으로 없어요 iterator() 를 이용해야한다. 어떤게 나올지는 몰라요
- 검색: contains(Object o)
- 크기: size()
- 비우기: clear()
- 비어있느지 여부: isEmpy()
3. 주요 구현 클래스
1. HashSet
- HashSet: 가장많이 사용하는 Set의 구현체입니다. 내부적으로HashMap을 사용하여 저장관리
- 특징
- 빠른 접근속도: 내부적으로 해시테이블을 사용하여 테이터를 저장하므로, 삽입,삭제,검색 속도가 빠르다.
- 삽입된 순서 를 유지하지 않는다
- null 허용 : null 값도 하나만 저장 가능
- 중복제거 동작원리
HashSet
은 내부적으로 데이터를 저장하기 위해 HashMap
을 사용합니다.
- 요소를 추가하면
HashMap
의 **키(key)**로 저장되고, 값(value)은 고정된 객체(PRESENT
)로 저장됩니다.
- 요소가 추가될 때:
- 객체의
hashCode()
를 기반으로 저장 위치를 결정.
- 동일한
hashCode()
를 가지는 객체는 equals()
메서드로 비교하여 중복 여부를 확인.
- 예제코드
2. LinkedHashSet
- Set 인터페이스의 구현체로 중복데이터 허용하지 않습니다. 삽입 순서를 유지하는 자료구조