Иногда значение нужно хранить не навсегда, а только короткое время: ответ API, результат вычисления или временную настройку.
Опишем запись кэша:
record Entry<T>(T value, long expiresAt) {}Создадим хранилище:
Map<String, Entry<String>> cache = new HashMap<>();
Добавим значение с временем жизни:
void put(String key, String value, long ttlMs) {
cache.put(key, new Entry<>(
value,
System.currentTimeMillis() + ttlMs
));
}Теперь достанем значение:
String get(String key) {
var entry = cache.get(key);
if (entry == null) {
return null;
}
if (entry.expiresAt() < System.currentTimeMillis()) {
cache.remove(key);
return null;
}
return entry.value();
}Проверка:
put("token", "abc", 1000);
System.out.println(get("token"));Ожидаемый вывод:
abc
После истечения TTL метод вернёт
null, а устаревшая запись удалится из Map.👉 Java Ready | #практика