2017-10-16 1 views
0

왜 OOP 언어는 객체의 메모리 위치를 클래스의 인스턴스에 대한 기본 해시 코드로 사용할 수 있습니까? 해시 테이블이 주소 지정 가능한 메모리보다 작은 경우.많은 OO 언어가 객체 자체의 메모리 위치를 기본 해시 코드로 사용하는 이유는 무엇입니까?

+0

해시 테이블은 일반적으로 해시 코드를 직접 테이블 인덱스에 매핑하지 않습니다. 주소는 일반적으로 불변이며 고유하며 계산에 비용이 들지 않아 편리하게 사용할 수 있습니다. – pvg

답변

1

매우 편리하기 때문에!

메모리 주소는 다른 개체가 동일한 메모리 위치를 차지할 수 없으므로 개체의 고유 식별자입니다. 해시 테이블을 사용할 필요는 없습니다. 처음에는 해시 테이블이 작고 단지 10 개의 버킷이 있다고 가정합니다. 개체를 넣을 양동이를 결정하려면 해당 주소와 % 10을 가져옵니다. 그리고 당신은 버킷보다 "충분히 좋은"분포를 가지고 있습니다. 해시 테이블은 정말 흥미 롭습니다. 예를 들어 해시 테이블에 대한 자세한 내용을 읽어 보시기 바랍니다. Wikipedia에 있습니다.

관련 문제