Я хотел иметь карту с сопоставлением клавиш для довольно большого объекта.
Поскольку карта будет использоваться в качестве кэша, я хотел создать значения / записи, на которые ссылаются программные ссылки (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
?
Спасибо!