2016-08-23 131 views
0

我谷歌身份哈希映射的使用,但沒有找到一個很好的答案。我也沒有得到下面的java doc解釋:身份哈希映射的使用

這個類的一個典型用途是拓撲保持對象圖轉換,如序列化或深度複製。爲了執行這種轉換,程序必須維護一個「節點表」,用於跟蹤所有已處理的對象引用。節點表不能等同不同的對象,即使它們恰好相等。此類的另一個典型用途是維護代理對象。例如,調試工具可能希望爲正在調試的程序中的每個對象維護一個代理對象。

有人可以提供身份哈希映射的好用例嗎?

+0

也許你想讀這個:http://stackoverflow.com/questions/3563847/what-is-the-use-of-hashcode-in-java – GhostCat

回答

0

我想在這裏很重要的一點是

節點表一定不能等同於不同的對象,即使它們碰巧是等於

如果添加一個鍵值對的地圖例如hashmap會使用equal方法檢查密鑰是否已經存在。但有些情況下,您想比較Java中真正標識的關鍵是對象引用(地址)。如Java文檔中所述,一個用例可以是管理代理對象的映射。如果你有兩個「相等」的對象,你仍然想爲它們創建一個單獨的代理對象。至於緩存,您希望將這些代理對象存儲在地圖中。然後使用源對象作爲鍵和代理對象作爲值的標識映射。

希望這可以讓它更清晰一些。