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

hashtable

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

collection1 collection2

chanhee.kim's profile image

chanhee.kim

2018-02-02 17:03

Read more posts by this author