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
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 |