Предполагая, что вы хотите получить только кэшированное значение с учетом всех ключей, вы можете просто создать объект CacheKey
. Карты / Hashtable все еще достойный кандидат здесь:
map.put(new CacheKey(keyA, keyB, keyC), value);
map.get(new CacheKey(keyA, keyB, keyC));
//etc...
Просто убедитесь, что правильно реализовали equals()
и hashcode()
в классе CacheKey
.
Однако, если вы намерены интенсивно использовать эту карту или хеш-таблицу в качестве кэша, вам следует серьезно рассмотреть возможность повторного использования существующей библиотеки кэширования, если только вы не хотите заниматься такими вещами, как ограничение количества записей, хранящихся на карте, выбирая какие записи удаляются при достижении предела и т. д. EhCache невероятно прост в использовании и имеет множество параметров конфигурации - кеши могут иметь максимальное количество записей или максимальный объем памяти, кеши могут быть переполнены на диск и т. д. .