| 자료구조 | 접근 | 탐색 | 삽입 | 삭제 |
| 해시 테이블 | O(1) | O(1) | O(1) | O(1) |
| HashMap | 해시테이블과 같지 않을까? | |||
| HashSet | ||||

해시테이블 - 삽입, 삭제 : O(1)
key의 해시값을 배열의 크기로 나눠 index를 얻고
key.hashCode() % SIZE;
해당index의 LinkedList에 삽입,삭제
LinkedList의 삽입,삭제는 O(1) 이므로
해시테이블 - 접근 : O(1)
key의 해시값으로 index얻고, 해당 index의 LinkedList에서 접근
LinkedList의 접근은 O(n) 이지만
원소가 배열의 각 인덱스마다 LinkedList에 흩어져 있으므로 O(1)
실제로 (배열의 크기)와 (원소 개수)를 가지고 적절히 비교해서
배열의 크기를 늘려주는 작업을 해준다.
if (size >= table.size() * LOAD_FACTOR) {
resize(); // 배열의 크기를 늘려줌
}
이를 통해 각index의 LinkedList의 크기는 전체 원소 개수에 비하면 매우 작아진다.
'Computer Science > DataStructure, Algorithm' 카테고리의 다른 글
| 흐름도( 플로우 차트 ) (0) | 2024.11.14 |
|---|---|
| 정렬 (0) | 2024.10.07 |
| 자료구조에서의 시간복잡도( 연결리스트, 배열 ) (0) | 2024.07.22 |
| 시간 복잡도, 빅오 표기법, 공간 복잡도 (0) | 2024.07.20 |
| 해시 테이블(Hash Table) (0) | 2024.06.03 |