0
为什么OOP语言可能会使用对象的内存位置作为类的实例的默认哈希代码?如果散列表将小于可寻址内存。为什么许多面向对象的语言使用对象本身的内存位置作为默认的哈希码?
为什么OOP语言可能会使用对象的内存位置作为类的实例的默认哈希代码?如果散列表将小于可寻址内存。为什么许多面向对象的语言使用对象本身的内存位置作为默认的哈希码?
因为它非常方便!
内存地址是一个对象的唯一标识符,因为没有其他对象可以占用相同的内存位置。哈希表不需要很大就可以使用它们。假设最初你的散列表很小,只有10个桶。要决定将你的对象放入哪个存储区,请将其地址和% 10
。而且你有“足够好”的分配桶。哈希表是非常有趣的事情,我建议阅读更多关于它们的信息,例如在Wikipedia。
散列表通常不会将散列码直接映射到表索引。该地址通常是不可变的,唯一的,并且不计算任何费用,因此它是一个方便的整数ID。 – pvg