我期待实现一个基于时间戳的具有多个键的缓存。除了哈希表,我还会使用什么数据结构。任何建议..。
对于两个值,可以使用配对,幸运的是java (Un)没有配对。
如果必须是三元组或四元组,建议采用哪种架构。或者仅仅使用最佳实践的数据结构也是足够的……
发布于 2010-07-02 19:35:58
假设您只想在给定所有键的情况下检索缓存值,则可以简单地创建一个CacheKey
对象。Map/Hashtable在这里仍然是一个不错的候选者:
map.put(new CacheKey(keyA, keyB, keyC), value);
map.get(new CacheKey(keyA, keyB, keyC));
//etc...
只需确保在CacheKey
类中正确实现equals()
和hashcode()
即可。
然而,如果你打算大量使用这个映射或哈希表作为缓存,你应该认真考虑重用现有的缓存库,除非你想处理一些事情,比如限制映射中存储的条目数量,当你达到限制时选择哪些条目被驱逐,等等。EhCache使用起来非常简单,并且有很多配置选项-缓存可以有最大数量的条目或最大内存大小,缓存可以溢出到磁盘,等等。
发布于 2010-07-02 19:03:28
创建一个哈希表,其中的值是对对象的引用,这样如果对象有多个键,则不必多次存储该对象。
幸运的是,这是Java中的默认设置。
发布于 2021-06-01 11:19:54
只需使用普通的MultiKeyMap或甚至装饰LRU map:
MultiKeyMap cache = MultiKeyMap.decorate(new LRUMap());
cache.put(keyA, keyB, value);
https://stackoverflow.com/questions/3165098
复制相似问题