我需要一个带有弱键的简单哈希映射。Java 自己的WeakHashMap
给了我这一点,但没有身份语义(它equals()
用于键比较)。
Google 的 Guava 库已经改进了它的哈希映射方法。在最新版本(14.0)中MapMaker
,我现在显然应该使用 a ,而不是使用 a (如果不是大多数的话,它有很多已弃用的东西),CacheBuilder
它有各种选项。好吧,它有一个weakKeys()
选项,所以这就是我将使用的。但是生成的缓存也是并发的(即,它在内部保存各种映射并使用自己的内部密钥集来同时控制访问),我无法将其关闭;我不需要并发,因为我已经在使用我自己的ReadWriteLock
来管理对我的地图的访问。
好吧,我会接受并发;把地图给我!我尝试:
Map<Foo, Bar> map = CacheBuilder.newBuilder().weakKeys().build();
等等,这给了我 a Cache<Object, Object>
,这不是 a Map<Foo, Bar>
!如何在 Google Guava 中获得简单的基于身份的弱键映射?