HashMap이란?
HashMap은 Hash Table을 구현한 Map으로 여러 개의 키-값 쌍을 빠른 검색과 삽입, 삭제가 가능한 자료구조입니다.
HashMap 기본 원리
HashMap은 내부적으로 배열을 사용하여 해시 버킷에서 데이터를 관리합니다.
해시 함수는 키를 해시값으로 변환해주는 역할을 합니다. 이 해시값은 배열의 인덱스로 사용되며, 여러 키가 동일한 해시값을 갖지 않도록 최대한 분산되어 값이 저장될 수 있습니다.
HashMap 연산
- 삽입 : put(Key, Value)
- 삭제 : remove(Key)
- 검색 : get(Key)
- 크기 : size()
- 비어있는지 확인 : isEmpty()
- 키가 있는지 확인 : containKey(Key)
- 모든 키 검색 : KeySet()
HashMap 장점
- HashMap은 데이터 삽입, 삭제, 검색은 평균 O(1)의 시간 복잡도를 가지며 빠른 처리가 가능합니다.
하지만 해시 충돌로 인해 성능이 저하될 수 있기 때문에 최악의 경우 O(n)의 시간 복잡도를 가집니다. - 키-값 쌍으로 저장되기 때문에 키를 사용하여 값을 빠르게 찾을 수 있습니다.
- HashMap은 null을 허용하기 때문에 키와 값에 null이 들어갈 수 있어 다양한 상황에서 데이터를 편리하게 관리할 수 있습니다.
HashMap 단점
- HashMap의 내부 구조는 키-값 쌍의 순서를 보장하지 않습니다. 만약 삽입한 순서대로 데이터를 검색하거나 저장하길 원한다면 LinkedHashMap과 같은 자료구조를 사용해야 합니다.
- 해시 함수의 특성상 해시충돌이 발생할 수 있어 성능이 저하될 수 있습니다.
- HashMap은 기본적으로 멀티쓰레드 환경에서 동기화를 지원하지 않습니다. 동시성이 요구되면 ConcurrentHashMap과 같은 자료구조를 사용해야합니다.
'CS > Data Structure' 카테고리의 다른 글
[CS][Data Structure] 그래프 (Graph) (0) | 2023.08.24 |
---|---|
[CS][Data Structure] 해시 셋 (HashSet) (0) | 2023.08.20 |
[CS][Data Structure] 해시테이블 (Hash Table) (0) | 2023.08.20 |
[CS][Data Structure] 힙 (Heap) (0) | 2023.08.20 |
[CS][Data Structure] 큐 (Queue) (0) | 2023.08.18 |