我想要一个映射到相当大对象的键映射。由于地图将用作缓存,因此我希望通过软链接 ( java.lang.ref.SoftReference
) 引用值/条目以在纯内存上清除它。但在这种情况下,我需要有自己的computeIfAbsent()
方法实现。
我可以通过以下方式实现它:
Map<Integer, SoftReference<T>> myMap = new HashMap<>();
public T get(Integer key) {
SoftReference<T> value = myMap.get(key);
if (value == null || value.get() == null) {
value = new SoftReference(retrieveValue());
myMap.put(key, value);
}
return value.get();
}
只是想知道,这样的地图是否有开箱即用的解决方案,比如java.util.WeakHashMap
?
谢谢!