Загрузка данных


import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;

public class SmartCache<K, V> {

    private Map<K, V> cache = new HashMap<>();

    public V getOrElse(K key, Function<K, V> loader) {

        if (cache.containsKey(key)) {
            System.out.println("[Cache] Взято из кэша для ключа: " + key);
            return cache.get(key);
        }

        System.out.println("[Cache] Ключ '" + key + "' не найден. Загружаем данные...");

        V value = loader.apply(key);

        cache.put(key, value);

        return value;
    }
}