кеш с несколькими ключами - PullRequest
0 голосов
/ 02 июля 2010

Я ожидаю реализации кэша на основе меток времени с несколькими ключами. Какую структуру данных, кроме хеш-таблиц, я бы использовал. Любые предложения ...

для двух значений можно использовать пару, к счастью, у java (un) нет пары.

если это должен быть триплет или квартет, какая архитектура рекомендуется. или достаточно использовать только наилучшую структуру данных ...

Ответы [ 2 ]

3 голосов
/ 02 июля 2010

Предполагая, что вы хотите получить только кэшированное значение с учетом всех ключей, вы можете просто создать объект CacheKey. Карты / Hashtable все еще достойный кандидат здесь:

map.put(new CacheKey(keyA, keyB, keyC), value);
map.get(new CacheKey(keyA, keyB, keyC));
//etc...

Просто убедитесь, что правильно реализовали equals() и hashcode() в классе CacheKey.

Однако, если вы намерены интенсивно использовать эту карту или хеш-таблицу в качестве кэша, вам следует серьезно рассмотреть возможность повторного использования существующей библиотеки кэширования, если только вы не хотите заниматься такими вещами, как ограничение количества записей, хранящихся на карте, выбирая какие записи удаляются при достижении предела и т. д. EhCache невероятно прост в использовании и имеет множество параметров конфигурации - кеши могут иметь максимальное количество записей или максимальный объем памяти, кеши могут быть переполнены на диск и т. д. .

0 голосов
/ 02 июля 2010

Создайте хеш-таблицу, где значением является ссылка на объект, чтобы вам не приходилось хранить объект несколько раз, если у него несколько ключей.

К счастью, этопо умолчанию в Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...