8
我需要一個Map
實現共享IdentityHashMap
和WeakHashMap
(引用相等,而不是equals()
和關鍵字上的弱引用)的屬性。IdentityHashMap和WeakHashMap的組合
你推薦什麼實現(它必須在Android上工作)?
我需要一個Map
實現共享IdentityHashMap
和WeakHashMap
(引用相等,而不是equals()
和關鍵字上的弱引用)的屬性。IdentityHashMap和WeakHashMap的組合
你推薦什麼實現(它必須在Android上工作)?
如果您建議番石榴,那麼new MapMaker().weakKeys().makeMap()
將直接做這項工作,因爲weakKeys
使用引用相等的密鑰。
的weakKeys
文檔說:
指定存儲在圖中的每個鍵(未值)應該被包裹在一個WeakReference的(默認,強引用被使用)。 警告:使用此方法時,生成的地圖將使用標識(==)比較來確定鍵的相等性,這是對Map規範的技術違規,可能不是您所期望的。
'IdentityHashMap,V>'? –
fge
@fge我在想,但它不會在地圖收集時從地圖上刪除密鑰。 – assylias
@assylias呃好的,我看到了問題...然後'WeakHashMap,V>'可以做到這一點(使用'Equivalence.identity()'),但這需要番石榴和鍵入''。 wrap()' –
fge