Реализация HashMap с программными ссылочными значениями

#java #hashmap #soft-references

#java #hashmap #программные ссылки

Вопрос:

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

Спасибо!

Комментарии:

1. Я не думаю, что в java есть что-то подобное из коробки, вам нужно реализовать это самостоятельно

Ответ №1:

Комментарии:

1. отличная альтернатива! Спасибо!