해싱과 해시함수
- 해싱: 해시함수를 이용해서 데이터를 해시테이블에 저장하고 검색하는 기법을 말한다.
해시함수
- 넘겨받은 데이터에 대해 고유한 숫자값을 만드는 알고리즘을 구현한 메서드
- 반환값을 해시값, 해시 코드, 또는 간단하게 해시라고 한다.
Boolean
같이 서로 구별되는 객체의 종류가 적거나, Integer
, Long
, Double
같은 Number
객체는 객체가 나타내려는 값 자체를 해시 값으로 사용할 수 있기 때문에 완전한 해시 함수 대상으로 삼을 수 있다. 하지만 String
이나 POJO(plain old java object)에 대하여 완전한 해시 함수를 제작하는 것은 사실상 불가능하다.
- 암호화: 해시를 분석했을 때 해시 함수를 알아낼 수 없도록 해야 한다.
- 충돌 위험성 최소화: 서로 다른 데이터에 대해 동일한 해시를 만들지 않도록 해야 한다.
해시(Hash)
- 특정 데이터가 저장되는 고유한 위치(Index) → 추가/삭제 시 데이터의 이동이 없다.
- 내부적으로 배열(Hash Table)을 이용하여 데이터를 저장 → 검색 속도가 빠르다.
- 데이터가 저장되어 있는 곳을 알려 준다.
충돌(Collision)