Algorithm

해시 테이블(Hash Table)

quedevel 2023. 4. 12. 10:18
728x90
반응형

해시테이블과 해시맵은 기본적으로 동일한 개념을 가지고 있습니다. 해시테이블은 데이터를 저장하는 자료구조 중 하나로, (Key)와 값(Value)으로 이루어진 데이터를 저장하고 검색하는데 사용됩니다. 키를 이용하여 값에 접근하므로, 데이터를 빠르 게 검색할 수 있습니다.

해시맵은 자바의 컬렉션 프레임워크에서 제공하는 클래스 중 하나로, 해시테이블을 구현한 클래스입니다. , 해시맵은 해시테 이블의 일종으로, 기본적인 개념과 사용 방법은 동일합니다.

하지만 해시맵은 해시테이블보다 좀 더 최적화된 구조와 알고리즘을 사용하여 보다 높은 성능을 제공합니다. 해시맵은 동기화 된(Synchronized) 버전과 동기화되지 않은(Unsynchronized) 버전이 존재하며, 동기화된 버전은 멀티스레드 환경에서 안 전하게 사용할 수 있습니다. 또한, 해시맵은 널(Null) 키와 널 값(Null Value)을 모두 허용하며, 해시테이블은 키와 값 모두에 대해 널을 허용하지 않습니다.

Hash Table ( with Javascript )

 const hashTable = {};
 
 hashTable['one'] = 1;
 hashTable['two'] = 2;
 hashTable['three'] = 3;
 
 console.log(hashTable['one']); // 1
 console.log(hashTable['two']); // 2
 console.log(hashTable['three']); // 3

해시테이블의 시간복잡도는 해시함수의 성능과 충돌의 유무에 따라 결정됩니다. 충돌이 없을 경우 O(1)의 시간복잡도를 가집 니다. 하지만 해시함수가 충돌을 일으키는 경우 연결리스트를 이용해 충돌을 처리해야 하므로, 최악의 경우 O(n)의 시간복잡 도를 가질 수 있습니다. 따라서 좋은 해시함수를 선택하는 것이 해시테이블의 성능에 중요한 역할을 합니다.

728x90
반응형

'Algorithm' 카테고리의 다른 글

LCA(Lowest Common Ancestor)  (1) 2023.04.15
DFS & BFS  (0) 2023.04.14
LIS (Longest Increasing Sequence)  (0) 2023.04.14
이분 탐색(Binary Search)  (0) 2023.04.12
정렬(Sort)  (0) 2023.04.10