들어가기 전에
해시를 구현하는 생성자에 대해 살펴보도록 하겠습니다.
학습 목표
해시의 생성자를 이해하고 구현할 수 있습니다.
핵심 단어
- 해시
- 생성자
강의 듣기
들어가기 전에
해시를 구현하는 생성자에 대해 살펴보도록 하겠습니다.
학습 목표
해시의 생성자를 이해하고 구현할 수 있습니다.
핵심 단어
강의 듣기
생성자
지금까지 해시의 키와 값을 저장해줄 내부 클래스 HashElement를 살펴보았습니다. 이번에는 해시를 구현하는 생성자를 만들겠습니다.
public class Hash<K, V> implements HashI<K, V> {
LinkedList<HashElement<K, V>>[] harray;
// 해시 구현
public Hash (int tableSize){
this tableSize = tableSize;
harray = (LinkedList<HashElement<K, V>>[]) new LinkedList[tableSize]; // 형 변환
// 연결 리스트 체이닝
for (int i=0; i<tableSize; i++)
harray[i] = new LinkedList<HashElement<K, V>>();
maxLoadFactor = 0.75;
numElements=0;
}
}
생각해보기
1) maxLoadFactor를 줄이거나 늘리면 어떻게 달라지나요? 어떤 상황에서 maxLoadFactor를 조절해야 할까요?
comment
최대 적재율을 줄이면, 해시 테이블에서 연결 리스트가 더 골고루 분포할 수 있다. 하지만, 그만큼 크기 조정을 더 자주 하게 되어서 시간이 많이 든다.
반대로 최대 적재율을 늘리면, 크기 조정 작업은 비교적 덜 하게 되지만, 그만큼 연결 리스트의 분포가 퍼지지 못한다는 단점이 있다.
일반적으로 해시 테이블이 어디에 사용될지 모르는 상황에서는 0.75가 적절한 최대 적재율이라고 한다.