2010-07-02 93 views
0

我正在寻找实现基于时间戳的缓存与多个键。什么数据结构,而不是散列表我会用。任何建议...与多个键的缓存

为两个值,对可以使用,java(un)幸运没有一对。

如果它必须是三元组或四元组,建议采用何种架构。或只是使用最佳实践的数据结构也是足够的...

回答

2

假设您只想检索给定的全部的缓存值,您只需制作一个CacheKey对象即可。地图/ Hashtable的仍然是一个不错的人选在这里:

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

只要确保正确实施equals()hashcode()CacheKey类。

但是,如果您打算大量使用此映射或散列表作为缓存,则应认真考虑重新使用现有的缓存库,除非您想处理诸如限制映射中存储的条目数量,选择哪些条目在达到限制时被驱逐等等。EhCache使用起来非常简单,并且有许多配置选项 - 缓存可以具有最大数量的条目或最大内存大小,缓存可以溢出到磁盘等。

0

做一个哈希表,其中值为参考对象,以便您不必多次存储对象if它有多个键。

幸运的是,这是Java中的默认值。