Hashtable과 HashMap
- HashMap은 Hashtable의 신버젼이며, Hashtable과 달리 HashMap은 동기화 처리가 되어있지 않다. 가능하면 Hashtable보다는 HashMap을 사용하자.
- HashMap은 해싱(hashing)기법을 사용해서 데이터를 저장하기 때문에 많은 양의 데이터를 검색할 때 성능이 뛰어나다.
- HashMap은 Map인터페이스를 구현하였으며, 데이터를 키와 값의 쌍으로 저장한다.
- 키(key) - 컬렉션 내에 (key) 중에서 유일해야 한다.
- 값(value) - 키(key)와 달리 데이터 중복을 허용한다.
해싱(hasing)
- 해시함수(hash function)를 이용해서 해시테이블(hash table)에 저장하고 검색하는 기법
- 해싱에 사용되는 자료구조는 배열과 링크드 리스트가 조합된 형태이다.

- 키를 이용해서 해시테이블로부터 데이터를 가져오는 과정
- 키를 이용해서 해시함수를 호출한다.
- 해시함수의 호출결과인 해시코드에 대응하는 배열에 저장된 링크드리스트를 찾는다.
- 링크드리스트에서 키와 일치하는 데이터를 찾는다. ※ 해시함수는 같은 키값에 대해 항상 같은 키값에 대해 항상 같은 해시코드를 반환해야한다. 서로 다른 키값일지라도 같은 값의 해시코드를 반환할 수 있다.
TreeMap
- 이진검색트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장한다.
- Map의 장점인 빠른 검색과 Tree의 장점인 정렬과 범위 검색의 장점을 모두 갖고 있다.
- 이진검색트리처럼 데이터를 저장할 때 정렬하기 때문에 저장시간이 길다는 단점을 가지고 있다.
- 정렬된 상태로 데이터를 조회하는 경우가 빈번하다면 데이터를 조회할때 정렬해야하는 HashMap보다는 이미 정렬된 상태로 저장되어 있는 TreeMap이 빠른 조회결과를 얻을 수 있다.
- 주로 HashMap을 사용하고, 정렬이나 범위검색이 필요한 경우에만 TreeMap을 사용하는 것이 좋다.
컬렉션 클래스 요약 및 정리