IdentityHashMap和WeakHashMap的组合

时间:2014-04-07 10:55:34

标签: java android map weak-references referenceequals

我需要一个Map实现,它共享IdentityHashMapWeakHashMap的属性(引用相等而不是equals()和弱引用键)。

您推荐哪种实施方式(必须在Android上运行)?

1 个答案:

答案 0 :(得分:4)

如果您建议使用Guava,那么new MapMaker().weakKeys().makeMap()将直接执行此任务,因为weakKeys使用引用相等的键。

weakKeys的文档说:

  

指定存储在地图中的每个键(非值)都应包装在WeakReference中(默认情况下,使用强引用)。   警告:使用此方法时,生成的映射将使用identity(==)比较来确定键的相等性,这是对Map规范的技术违反,可能与您的预期不符。