2017-10-07 3 views
-4

내가 아는 한 해시 테이블을 사용하는 항목을 저장하는 간단한 키 값 쌍을 사용하는 반면 item.it 의미 사전은 해시 테이블보다 훨씬 빠릅니다 (어느 think.Please 올바른 만약 내가 잘못하면 나). 해시 테이블을 사용해서는 안된다는 뜻입니까?해시 테이블 대 Dictonary

+2

* "이것은 사전이 해시 테이블보다 훨씬 빠르다는 것을 의미합니다."* -이 사업에서 우리는 경험적 증거가없는 "X가 Y보다 빠릅니다"라고 결론 지을 수 없습니다 ... 당신의 위치는 어디입니까? – WhiZTiM

+0

해시 테이블에서 항목을 검색하기 때문에 먼저 해시 키를 계산 한 다음 사전에서와 같이 key를 입력하여 값을 가져올 수있는 필수 항목을 찾습니다. 내가 틀렸다면 나를 수정하십시오. – user7190448

+0

@ user7190448 한 예로 당신의 진술이 의심 스럽다면, .NET의'Dictionary '를 고려해보십시오. 그것은 해시 테이블로 구현됩니다. 대부분의 사전은 단순히 "가치를 얻는다"고 어떻게 생각하십니까? ;) – jdphenix

답변

1

답변은 "다릅니다"입니다.

사전은 단순히 키를 값에 매핑하는 방법입니다. 라이브러리를 사용하거나 직접 구현할 수 있습니다.

해시 테이블은 해시 함수를 기반으로하는 키 사전을 구현하는 특정 방법입니다. 이 함수는 대개 모듈로 산술을 기반으로합니다. 즉, 두 개의 별개 값이 해시 키로 끝날 수 있으므로 키간에 충돌이있게됩니다. 그런 다음 충돌을 해결하는 방법을 결정하는 것은 사용자 (또는 해시 테이블을 구현하는 사람)에게 달려 있습니다. 동일한 키에 값을 연결하고, 다시 해시하고, 하위 해시 테이블을 사용하거나, 새 해시 함수 (값 비싼)로 다시 시작하려는 경우도 있습니다.

사전 (해시 테이블)의 기본 구현에 따라 조회 성능에 영향을줍니다.