반응형

Map


  • 키와 쌍을 가짐.
  • 키를 중복 x, 값은 중복 o
  • Map은 내부적으로 Entry배열을 가지고 있는데 Entry는 key, value 쌍을 의미한다.
    대략 코드는 아래와 같이 생겼다.
  • Collection interace는 아니지만, 동일하게 사용되기 위해 Entry를 Set으로 반환한다.

HashMap


특징

  • HashMap(동기화 x)은 Hashtable(동기화 O)의 신버전
  • 순서를 유지하려면, LinkedHashMap 클래스를 사용하면 된다.
  • Hashing 기법으로 데이터를 저장한다. 데이터가 많아도 검색이 빠르다.

hashing

  • 해싱이란 해시함수를 이용하여 해시 테이블에 데이터를 저장하고, 읽어오는 것을 의미한다.
    java에서는 hashCode()
  • 해시 함수란 key를 인자로 주면 해시 코드를 만들어 준다.
    해시 코드는 배열에서 인덱스라고 생각하면 된다.
    즉, 배열을 활용한다.
  • 인덱스를 찾으면 해당 인덱스에서 링크드 리스트를 활용하여 데이터를 컨트롤 한다.
    이 구조를 hash table 이라고 한다.
  • 이런 해싱 기법은 HashMap 뿐 아니라 Hash가 들어가는 HashSet, Hashtable, HashMap에서 모두 사용된다.

아래는 환자정보관리 시스템으로 예시를 든 내용이다. 자바의 동영상 강의 참고

hash table

  • 배열과 링크드 리스트가 조합된 형태
  • 배열은 접근성이 좋은 장점, 링크드 리스트의 변경이 용이한 점을 활용했다.

TreeMap


특징

  • TreeSet과 같은 원리이다.
  • 즉, 데이터 추가 삭제가 느리고, 정렬 및 검색에 좋다.
반응형
복사했습니다!