【发布时间】:2017-10-16 22:42:36
【问题描述】:
为什么 OOP 语言可以使用对象的内存位置作为类实例的默认哈希码?如果哈希表会小于可寻址内存。
【问题讨论】:
-
哈希表通常不会将哈希码直接映射到表索引。该地址通常是不可变且唯一的,并且无需计算任何成本,使其成为一个方便的整数 id。
为什么 OOP 语言可以使用对象的内存位置作为类实例的默认哈希码?如果哈希表会小于可寻址内存。
【问题讨论】:
因为很方便!
内存地址是一个对象的唯一标识符,因为没有其他对象可以占用相同的内存位置。哈希表不需要很大就可以使用它们。假设最初您的哈希表很小,只有 10 个桶。要决定将对象放入哪个存储桶,请获取其地址和% 10。而且你有“足够好”的桶分布。哈希表真的很有趣,我建议阅读更多关于它们的信息,例如在Wikipedia。
【讨论】: