Set
Set
은 중복을 허용하지 않는 순서 없는 객체들의 모음이다.
빠른 검색 속도를 가진다. 인덱스가 따로 없기 때문에 iterator를 사용한다.
HashSet
내부적으로 HashMap
을 합성하고 있다.
단, HashMap
이 key-value
형태로 저장을 하는데 반해 HashSet
은 HashMap
을 key-dummyObject
형태로 저장한다.
HashMap
과 마찬가지로 해싱을 사용한다.
hasCode
를 이용하기 때문에 속도가 상당히 빠르다.
HashMap vs HashSet
HashSet
은 내부적으로HashMap
을 사용한다.HashMap
은 요소들을Entry<Key, Value>
형태로 저장하고 내부적으로 연결 리스트 형태로 사용하지만,HashSet
은 오직 요소 자체를 저장한다.(hashCode 활용
)- 하나의
null
을 가질 수 있다. HashSet
에 저장되는 요소들은equals()
,hashCode()
를 반드시 구현해야한다. (중복 값 체크를 위해)HashMap
이HashSet
보다 성능이 더 좋다.- 왜일까?
HashSet
도 내부적으로HashMap
을 사용하는데? - 보통
HashMap
의key
는unique key
를 사용하기 때문에 객체 자체를 사용하는HashSet
보다는 더 빠르다. (만일 HashMap의 keySet이 Object라면 거의 의미가 없을수도?)
- 왜일까?