2013-04-18 3 views
0

Я хочу реализовать простой кэш MRU: Я буду использовать очереди:Реализовать MRU алгоритм

get(Object): 
  • проверки, если очередь содержит объект
    • ДА: удалить его из очереди и вставить его в начало
    • No: вперед запрос к системе, получить элемент и вставить в начале

Подходит ли этот подход? Я видел, что многие реализации используют Карты, но я не понимаю, почему. Зачем нужна пара Key, Value для кеша ?!

+0

вы могли бы добавьте временную метку 'lastUsed' к вашим объектам и отсортируйте свою коллекцию с помощью этой отметки времени –

+0

забудьте о части MRU (выселение может быть политикой, которая может быть подключена). Подумайте о части кеша. Будет ли смысл иметь смысл? –

ответ

0

, потому что проверка, если коллекция содержит элемент гораздо быстрее с картой (теоретически O (1)), с очередью вам придется перебрать все существующие элементы и сравнить то есть O (sizeOfQueue)

+0

Да, но зачем использовать карту, а не набор?! – matthias

+0

набор не позволит вам извлечь элемент из коллекции, Set API не включает функцию get(). – yurib

Смежные вопросы