0
爲什麼OOP語言可能會使用對象的內存位置作爲類的實例的默認哈希代碼?如果散列表將小於可尋址內存。爲什麼許多面向對象的語言使用對象本身的內存位置作爲默認的哈希碼?
爲什麼OOP語言可能會使用對象的內存位置作爲類的實例的默認哈希代碼?如果散列表將小於可尋址內存。爲什麼許多面向對象的語言使用對象本身的內存位置作爲默認的哈希碼?
因爲它非常方便!
內存地址是一個對象的唯一標識符,因爲沒有其他對象可以佔用相同的內存位置。哈希表不需要很大就可以使用它們。假設最初你的散列表很小,只有10個桶。要決定將你的對象放入哪個存儲區,請將其地址和% 10
。而且你有「足夠好」的分配桶。哈希表是非常有趣的事情,我建議閱讀更多關於它們的信息,例如在Wikipedia。
散列表通常不會將散列碼直接映射到表索引。該地址通常是不可變的,唯一的,並且不計算任何費用,因此它是一個方便的整數ID。 – pvg