Выбор ответа Middle Коллекции изнутри спрашивают часто обновлено
LRU-кеш на стандартной коллекции
Вопрос
Какой класс проще всего превратить в LRU-кеш?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: LinkedHashMap с accessOrder = true и removeEldestEntry. LinkedHashMap держит двусвязный список узлов.
Варианты ответа
TreeMapс компаратором по времени последнего доступа к ключуHashMapс периодической очисткой старых записей по таймеруPriorityQueueпо времени последнего обращения к элементуLinkedHashMapсaccessOrder = trueиremoveEldestEntryправильный ответ
Разбор
LinkedHashMap держит двусвязный список узлов. В режиме accessOrder каждый get переносит узел в конец, а removeEldestEntry после вставки удаляет самый старый, если превышен размер. Всё O(1). TreeMap по времени потребует удалять и вставлять заново при каждом доступе (O(log n)) и отдельно хранить время. HashMap порядка не знает. PriorityQueue не умеет быстро обновлять приоритет элемента.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.