CS/Data Structure

[CS][Data Structure] 해시 맵 (HashMap)

Jyuni 2023. 8. 20. 21:16

HashMap이란?

HashMap은 Hash Table을 구현한 Map으로 여러 개의 키-값 쌍을 빠른 검색과 삽입, 삭제가 가능한 자료구조입니다.

HashMap 기본 원리

HashMap은 내부적으로 배열을 사용하여 해시 버킷에서 데이터를 관리합니다.

해시 함수는 키를 해시값으로 변환해주는 역할을 합니다. 이 해시값은 배열의 인덱스로 사용되며, 여러 키가 동일한 해시값을 갖지 않도록 최대한 분산되어 값이 저장될 수 있습니다.

HashMap 연산

  • 삽입 : put(Key, Value)
  • 삭제 : remove(Key)
  • 검색 : get(Key)
  • 크기 : size()
  • 비어있는지 확인 : isEmpty()
  • 키가 있는지 확인 : containKey(Key)
  • 모든 키 검색 : KeySet()

HashMap 장점

  1. HashMap은 데이터 삽입, 삭제, 검색은 평균 O(1)의 시간 복잡도를 가지며 빠른 처리가 가능합니다.
    하지만 해시 충돌로 인해 성능이 저하될 수 있기 때문에 최악의 경우 O(n)의 시간 복잡도를 가집니다.
  2. 키-값 쌍으로 저장되기 때문에 키를 사용하여 값을 빠르게 찾을 수 있습니다.
  3. HashMap은 null을 허용하기 때문에 키와 값에 null이 들어갈 수 있어 다양한 상황에서 데이터를 편리하게 관리할 수 있습니다.

HashMap 단점

  1. HashMap의 내부 구조는 키-값 쌍의 순서를 보장하지 않습니다. 만약 삽입한 순서대로 데이터를 검색하거나 저장하길 원한다면 LinkedHashMap과 같은 자료구조를 사용해야 합니다.
  2. 해시 함수의 특성상 해시충돌이 발생할 수 있어 성능이 저하될 수 있습니다.
  3. HashMap은 기본적으로 멀티쓰레드 환경에서 동기화를 지원하지 않습니다. 동시성이 요구되면 ConcurrentHashMap과 같은 자료구조를 사용해야합니다.