해시함수는 문자열을 받아서 숫자를 반환 하는 함수이다.
(문자열에 대해 숫자를 할당 한다.)
해시 함수는 배열이 얼마나 큰지 알고 있어야 하며, 유효한 인덱스만 반환해야 한다. 만약 배열이 5개의 원소만 가질수 있다면 50을 반환해서는 안된다.
해시 테이블
해시 맵, 맵, 딕셔너리, 연관 배열 이라는 이름으로도 알려져 있다.
해시 테이블은 속도가 빠르다
let book = {};
book["apple"] = 0.67;
book["milk"] = 1.49;
book["avocado"] = 1.49;
console.log(book);
// {apple: 0.67, milk: 1.49, avocado: 1.49}
해시 테이블은 key와 value를 가진다. book이라는 해시 테이블에서 상품 이름은 key가 되고, 가격은 value가 된다.
해시 테이블을 사용 하는 대표적인 예로는
전화번호부를 만든 해시 테이블
let phone_book = {};
phone_book["jenny"] = 123456;
phone_book["emergency"] = 119;
console.log(phone_book["jenny"]); // 123456
let voted = {};
function check_voter(name) {
if (voted[name]) {
console.log("kick them out!");
} else {
voted[name] = true;
console.log("let them vote!");
}
}
check_voter("tom"); // let them vote!
check_voter("tom"); // kick them out!
check_voter("mike"); // let them vote!
캐싱이란?
정보를 다시 계산하지 않고 저장했다가 알려주는 것
캐싱의 장점
배열에 값을 고루 분포시키는 함수 이다!
값들이 뭉쳐있으면 충돌이 자주 발생한다.
해시 테이블은 해시 함수와 배열을 결합해서 만든다
충돌은 나쁘다. 충돌을 줄이는 해시 함수가 있어야 한다.
해시 테이블은 빠른 탐색, 삽입, 삭제 속도를 가진다.
해시 테이블은 어떤항목과 다른 항목의 관계를 모형화하는데 좋다.
해시 테이블은 데이터를 캐싱하는 데도 사용된다.
해시 테이블은 중복을 잡아내는 데도 뛰어나다.
참고
'Hello Coding 알고리즘' 책을 공부하여 요약정리한 내용입니다.