2014-01-25 72 views
0

我知道java中的IdentityHashMap的概念,但我從來沒有見過它的使用。有人可以解釋我真正的用法,或者我們必須在java中使用IdentiyHashMap的真實情況。有人能告訴我在Java中IdentityHashMap的實際用法嗎?

+3

請參閱http://stackoverflow.com/questions/838528/use-cases-for-identityhashmap –

+0

可能在對象圖遍歷期間,使用它來確保您不會訪問/處理堆上的同一對象多於一旦。 – superEb

+0

我已經訪問過這個鏈接,但仍然沒有得到任何合適的使用。 java中的每個對象都有特定的用途,我只想知道在哪種情況下我們必須使用IdentityHashMap。 – Sambit

回答

2

有時候你想要類似hashmap的行爲(將數據與一個關鍵字相關聯),但是關鍵必須是對象的特定副本而不是對象的值。這就是IdentityHashMap爲您所做的。

例如,我在XSLT編譯器中使用它來跟蹤必須與分析樹中的特定節點相關聯的瞬態上下文信息。在樹中其他地方可能有一個具有相同值的節點,因此它們具有相同的哈希碼並且相等,但是它出現的上下文會有所不同,因此我需要能夠單獨查找它們。

基本上:是的,有些情況下它很有用。你可能永遠不會碰到它們,但它們只是普通的,它值得包括在圖書館裏,而不是強迫我們這些需要它的人每次重新發明它。

相關問題