Это вопрос, который много поднимается на собеседовании. Идея состоит в том, чтобы определить структуру данных вместо использования Java, встроенного в LinkedHashMap.
Кэш LRU удаляет наименее недавно использованную запись, чтобы вставить новую. Итак, учитывая следующий сценарий:
A - B - C - D - E
Где A - наименее недавно используемый элемент, если мы должны были вставить F, нам нужно удалить A.
Это можно легко реализовать, если мы сохраним HashMap с элементами кэша (ключ, значение) и отдельный список, содержащий ключ и время использования элементов. Однако нам нужно будет запросить список, чтобы найти наименее недавно используемый элемент с потенциальной сложностью времени O (n).
Как эта структура может быть реализована в Java для общих объектов и операций O (1)?
Это отличается от возможного дубликата тем, что он фокусируется на эффективности (O (1) ops) и реализации самой структуры данных, не распространяя Java.