LinkedHashMap 作为一个 CacheMap

本文探讨了如何利用Java中的LinkedHashMap实现自定义缓存。通过覆盖removeEldestEntry方法,可以设定最大条目数量,当超过该数量时自动删除最旧的条目,保持缓存大小稳定。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天我想实现一个定数的map,搜索Java Map的实现类,发现了下面的说明:

url: https://docs.oracle.com/javase/tutorial/collections/implementations/map.html

LinkedHashMap provides two capabilities that are not available with LinkedHashSet. When you create a LinkedHashMap, you can order it based on key access rather than insertion. In other words, merely looking up the value associated with a key brings that key to the end of the map. Also, LinkedHashMap provides the removeEldestEntry method, which may be overridden to impose a policy for removing stale mappings automatically when new mappings are added to the map. This makes it very easy to implement a custom cache.

For example, this override will allow the map to grow up to as many as 100 entries and then it will delete the eldest entry each time a new entry is added, maintaining a steady state of 100 entries.

private static final int MAX_ENTRIES = 100;

protected boolean removeEldestEntry(Map.Entry eldest) {
    return size() > MAX_ENTRIES;
}

 

转载于:https://www.cnblogs.com/evanxyhu/p/LinkedHashMap_as_cacheMap.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值