我需要一个Map
实现,它共享IdentityHashMap
和WeakHashMap
的属性(引用相等而不是equals()
和弱引用键)。
您推荐哪种实施方式(必须在Android上运行)?
答案 0 :(得分:4)
如果您建议使用Guava,那么new MapMaker().weakKeys().makeMap()
将直接执行此任务,因为weakKeys
使用引用相等的键。
weakKeys
的文档说:
指定存储在地图中的每个键(非值)都应包装在WeakReference中(默认情况下,使用强引用)。 警告:使用此方法时,生成的映射将使用identity(==)比较来确定键的相等性,这是对Map规范的技术违反,可能与您的预期不符。