자료구조

HashMap이란?

Z00_HWAN_99 2024. 6. 17. 16:49
728x90
반응형

이번 글에서는 제가 백준과 프로그래머스에서 알고리즘을 풀며 자주 나오는 HashMap에 대해서 알려드리는 글을 써보려고 합니다.

이 자료구조는 많은 코딩테스트에도 등장하기도 하니, 많은 분들도 학습하셔서 완벽히 자기 자신의 것으로 만들어가는 시간 가지셨으면 좋겠습니다.

 

HashMap이란?

  • Java에서 제공하는 데이터 구조 중 하나로, Key - Value 쌍을 저장하는 자료구조.
  • 주로 검색, 삽입, 삭제, 업데이트 연산을 빠르게 수행할 수 있음.

HashMap의 장점?

  • Key - Value 구조 : 각 요소는 Key와 Value로 구성되어 있음. 또한, Key는 중복될 수 없고, Value는 중복될 수 있음.
  • 빠른 검색 속도 : HashMap은 해시함수를 사용하여 요소를 저장하고 검색하기 때문에, 평균적으로 O(1)의 시간 복잡도로 요소에 접근 가능함. 이것은 매우 큰 데이터셋에서도 효율적인 검색을 가능케 해줌.
  • Null 허용 : Key나 Value로 null을 저장할 수 있음. 하지만 Key는 중복될 수 없으므로, 하나의 HashMap 내에서는 하나의 null Key만 허용됨.

HashMap의 단점?

  • 동기화 : HashMap은 기본적으로 동기화되지 않기 때문에 여러 스레드가 동시에 접근할 경우 문제가 발생할 수 있음. 멀티스레드 환경에서는 동기화된 ConcurrentHahMap을 사용하는 것이 좋음.
  • 저장 순서 보장 X : HashMap은 요소들의 저장 순서를 보장하지 않음. 삽입 순서나 접근 순서와는 상관없이 저장된 요소들을 순회할 때 순서가 일정하지 않음 -> 하지만 Key 값에 순서를 넣음으로써 해결 가능

HachMap을 사용할 때 주의할 점은 해시 충돌이 발생할 수 있기 때문에 충분히 큰 크기의 용량(Capacity)을 설정하고, 적절한 로드 팩터(Load Factor)를 고려하여 성능을 최적화하여 사용하는 것이 좋습니다.

 

https://github.com/bottomsUp-99

 

bottomsUp-99 - Overview

Backend Developer. bottomsUp-99 has 10 repositories available. Follow their code on GitHub.

github.com

 

728x90
반응형

'자료구조' 카테고리의 다른 글

Comparable VS Comparator 의 이해  (0) 2024.06.30
ConcurrentHashMap VS ConcurrentSkipListMap 이란?  (0) 2024.06.19
AuthProvider VS Provider 이란?  (0) 2024.06.19
Map이란?  (0) 2024.06.19
HashSet이란?  (0) 2024.06.17