해시테이블은 키(Key)를 통해 데이터를 값(Value)과 매핑하는 자료구조입니다. 내부적으로 해시 함수(Hash Function)를 사용하여 키를 특정 위치(버킷)에 저장합니다.
충돌이 발생한 데이터를 연결 리스트로 저장
빈 공간을 찾아 충돌 데이터를 다른 위치에 저장
| 장점 | 단점 |
|---|---|
| 평균 O(1)의 빠른 검색, 삽입, 삭제 속도 | 해시 충돌로 인한 성능 저하 가능성 |
| 키-값 저장으로 효율적인 데이터 관리 | 메모리 사용량이 많을 수 있음 |
| 데이터 순서와 상관없이 동작 | 순차 데이터 탐색에는 비효율적 |
import java.util.Hashtable;
public class HashTableExample {
public static void main(String[] args) {
// 해시테이블 생성
Hashtable<Integer, String> hashTable = new Hashtable<>();
// 데이터 삽입
hashTable.put(1, "Apple");
hashTable.put(2, "Banana");
hashTable.put(3, "Cherry");
// 데이터 검색
System.out.println("Key 2: " + hashTable.get(2)); // Output: Banana
// 데이터 삭제
hashTable.remove(1);
System.out.println("After removal: " + hashTable);
// 데이터 확인
if (hashTable.containsKey(3)) {
System.out.println("Key 3 exists with value: " + hashTable.get(3));
}
}
}
해시테이블은 데이터를 효율적으로 저장하고 빠르게 검색할 수 있어 검색 중심의 시스템에서 매우 유용하다는 것을 알게 되었고 충돌을 효과적으로 처리하는 것이 성능에 중요한 영향을 미친다는 점도 느꼈습니다.