我正在寻找使用多个密钥实现基于时间戳的缓存。我将使用除哈希表之外的数据结构。任何建议......
对于两个值,可以使用pair,java(un)幸运的是没有一对。
如果必须是三元组或四元组,建议使用什么架构。或者只是使用最佳实践数据结构也是足够的......
答案 0 :(得分:2)
假设您只想检索给定所有键的缓存值,您只需创建一个CacheKey
对象即可。地图/哈希表仍然是一个不错的候选人:
map.put(new CacheKey(keyA, keyB, keyC), value);
map.get(new CacheKey(keyA, keyB, keyC));
//etc...
确保在equals()
课程中正确实施hashcode()
和CacheKey
。
但是,如果您打算大量使用此映射或散列表作为缓存,则应认真考虑重新使用现有的缓存库,除非您要处理诸如限制存储在映射中的条目数等事情,选择哪个当你达到限制时,条目被驱逐等。EhCache使用起来非常简单并且有许多配置选项 - 缓存可以有最大条目数或最大内存大小,缓存可以溢出到磁盘等。< / p>
答案 1 :(得分:0)
创建一个哈希表,其中值是对象的引用,这样如果对象有多个键,则不必多次存储该对象。
幸运的是,这是Java中的默认设置。
答案 2 :(得分:0)
只需使用普通的 MultiKeyMap 甚至装饰 LRU 映射:
MultiKeyMap cache = MultiKeyMap.decorate(new LRUMap());
cache.put(keyA, keyB, value);