Новое Распределяем каналы MAX по категориям и территориям. Читать новость
Открытый канал ID 72002027903583

Java

Каналов в рубрике
2 112
Место этого канала
№ 223
Открыть рубрику →
Весь мир
Открыть в MAX Отчёт

Публикации за период

По реакциям

Поиск и вся лента — после бесплатной регистрации. Свои даты — по подписке; владелец канала видит их бесплатно. Сортировка по реакциям — по подписке. Зарегистрироваться

Загрузка…

Простой LRU-кеш в Java без дополнительных библиотек
LRU удаляет запись, к которой дольше всего не обращались. Для небольшого кеша достаточно LinkedHashMap:
import java.util.LinkedHashMap;
import java.util.Map;

class LruCache<K, V> extends LinkedHashMap<K, V> {
private final int capacity;

LruCache(int capacity) {
super(16, 0.75f, true);
if (capacity <= 0) {
throw new IllegalArgumentException(
"capacity must be positive"
);
}
this.capacity = capacity;
}

@Override
protected boolean removeEldestEntry(
Map.Entry<K, V> eldest) {
return size() > capacity;
}
}
Третий аргумент true включает порядок по обращениям: успешный get() переносит запись в конец. После добавления новой записи removeEldestEntry() позволяет удалить первую, если лимит превышен.
var cache = new LruCache<String, Integer>(2);

cache.put("A", 1);
cache.put("B", 2);
cache.get("A"); // Теперь B использовали давнее
cache.put("C", 3); // Удалится B

System.out.println(cache.keySet()); // [A, C]
Лимит задаётся числом записей, а не объёмом памяти. TTL здесь нет, и кеш не потокобезопасен. Более того, даже get() может менять внутренний порядок, поэтому параллельные чтения тоже требуют синхронизации.
Просмотры: 80
Перейти в пост Открыть в MAX Сообщить о неточности
ВКонтакте Телеграм Одноклассники
Избранное в datool.ru

Следите за каналом в личном кабинете

Зарегистрируйтесь в datool.ru, чтобы добавить канал «Java» в избранное и отслеживать его показатели.

Зарегистрироваться
Для владельцев каналов

Подтвердите свой канал

Войдите или зарегистрируйтесь в datool.ru, затем добавьте нашего бота в канал по инструкции в личном кабинете. После проверки владения замок исчезнет и вам станет доступно управление каналом.

Войти или зарегистрироваться

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти