是否存在 Java Map 缓存数据结构? [关闭]
Posted
技术标签:
【中文标题】是否存在 Java Map 缓存数据结构? [关闭]【英文标题】:Exists a Java Map cache data structure? [closed] 【发布时间】:2022-01-10 10:59:17 【问题描述】:我需要在我的 java 应用程序中处理一个缓存地图。 这是地图是一个不断增长的结构,我需要一些方法来删除地图中一段时间不使用的旧对象。
是否有任何现有的 Java 地图结构可以实现此逻辑,定义地图中对象的最大生命周期或实现此地图的一些通用库? 我正在使用 Java8 和 Java-Commons 库。
【问题讨论】:
看看 Google Guava Cache 的实现! 【参考方案1】:如果您可以添加外部库,您可以使用guava 或Caffeine
另一种选择是让守护线程定期唤醒并删除未触及的对象,但我认为使用现有库更好。
【讨论】:
【参考方案2】:您可以将LinkedHashMap 扩展为 LRU 缓存。
static class LRUCache<K, V> extends LinkedHashMap<K, V>
private int maxSize;
private LRUCache(int maxSize)
super(maxSize, 0.75f, true);
this.maxSize = maxSize;
@Override
protected boolean removeEldestEntry(Map.Entry<K, V> eldest)
return size() > maxSize;
public static void main(String[] args)
LRUCache<Integer, Integer> cache = new LRUCache<>(2);
cache.put(1, 1);
cache.put(2, 2);
cache.get(1);
cache.put(3, 3);
cache.get(1);
cache.put(4, 4);
cache.get(1);
cache.put(5, 5);
System.out.println(cache);
输出:
1=1, 5=5
您可以在removeEldestEntry()
中实施删除策略。
【讨论】:
以上是关于是否存在 Java Map 缓存数据结构? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章