2010-09-13 60 views

回答

4

在JavaME中,這三件事情是無關的。

對象的hashCode是它的一個半唯一標識符。

對象的引用是該對象的作用域句柄。

對象的地址(可能)無法獲得,並且肯定無用。

+2

絕對有用。如果你想在'TreeMap'中存儲一些東西,但是不關心特定的順序呢?如果你能得到對象的引用,並比較你可以爲每個對象使用'TreeMap'。 – 2011-10-04 07:13:15

0

對象的引用地址指向對象所在的內存中的位置。

哈希碼通過哈希算法生成,用於標識哈希集合中的對象。不同的算法會產生不同的代碼(糟糕的算法會導致較差的散列碼和集合中更多的衝突)。

0

對象的哈希碼和它在內存中的地址在任何方面都沒有關係。只是對象的不同實現(實際上以不同的語言)使用對象的內存地址作爲識別對象的唯一方式。

通常,方法對hashCodeequals提供了用於比較對象的身份的手段。在實現自己的哈希方案時,應該記住哈希值應該由使對象唯一的東西組成。例如,假設您爲數據庫系統提供了一個對象映射器,並且想要引入一個對象 - 您知道在您的表中,客戶對於其主鍵是唯一的,因此將此主鍵作爲散列碼返回將是完美的可接受的,而不是與對象的內存地址有任何關係。

如果客戶使用他的名字,姓氏和出生日期(這不足以識別一個人的唯一身份,但爲簡潔起見保持簡單),那麼你可以將這3個值散列成哈希碼並在你的O/R映射實現中使用它。

相關問題