2011년 6월 9일 목요일

Hash Code 란?

hashCode라는 것은 일반적으로 Hashtable에 그 객체를 넣을 때 사용되는
hash code 값을 의미합니다. 여기서 equals라는 것은
두 Object가 Type이 같고 그 내용 또는 속성들이 같을 때 true를 return 해줍니다.
hash code는 대체로 두가지 방식으로 만들 수 있죠...
두 객체가 있을 때, 두 객체의 내용이 같더라도
다른 hash code를 넘겨주는 방식과
두 객체가 내용이 같다면 같은 hash code를 넘겨주는 방식이 있습니다.
이러한 방식을 통해서 equals도 또한 구현할 수 있을 것입니다..
해시테이블은 키값과 키에대한 값(내용)이 하나의 뭉치로 테이블에 저장이 됩니다..
해시테이블을 사용하는 가장 중요한 이유는 빠르게 검색할수 있기 때문이죠..
배열이나 백터같은 경우는 순차적으로 값을 꺼내야 하기때문에 느립니다..
음.. 책같은 거 보실때.. index부분있죠..??
어떤 단어 하나만 알고있으면..
그 단어에 대한 내용이 담긴 책페이지를 알수 있듯이..
해시테이블도 키값만 알면 키값에 대한 내용을 바로 찾아내 올수가 있습니다..
그러니 검색할때 굉장히 빠른거죠..
하지만.. 무겁습니다..
맵에서 키/객체 쌍이 저당되는 위치는
키를 이용한 해싱(hashing)이라는 과정을 통해 결정된다.
해싱은 키 객체를 처리하여
해시 코드(hash code)라고 하는 정수값을 만들어 낸다
Object클래스에 정의되어 있는 hashcode() 메소드는
객체에 대해 int형의 해시코드를 만들어 낸다.
해시 코드는 대개 맵 내에 위치한 메모리의 첫 지점으로부터의
변위로 사용되어 키/객체 쌍이 저장되어 있는 위치를 결정한다.
이론적으로 해싱과정은 주어진 영역 내에 골고루 분포되는 값을 만들어 내야하며,
각각의 키는 모두 서로 다른 해시 코드를 만들어 내야 한다.
일반적으로 이와 같은 경우는 없지만 비슷한 방법이 있으므로
이것은 별 문제가 되지 않는다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...