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라면 거의 의미가 없을수도?)
- 왜일까?