lfu算法实现java_java笔记-快速实现LRU算法

该博客展示了如何在Java中实现一个基于LFU(Least Frequently Used)算法的缓存系统。通过自定义LinkedHashMap子类`LRUCache`,当缓存达到指定大小时,最近最少使用的频率较低的元素将被移除。示例代码中,博客作者创建了一个容量为5的缓存,并插入一系列键值对,然后展示了在插入新元素和访问现有元素后,缓存如何更新以保持LFU策略。
摘要由CSDN通过智能技术生成

public class LRUCache extends LinkedHashMap {

private final int CACHE_SIZE;

public LRUCache(int cacheSize){

super((int)Math.ceil(cacheSize / 0.75) + 1,0.75f,true);

CACHE_SIZE = cacheSize;

}

@Override

protected boolean removeEldestEntry(Map.Entry entity) {

return size() > CACHE_SIZE;

}

public static void main (String...args){

var cache = new LRUCache(5);

cache.put(1L,"1L");

cache.put(2L,"2L");

cache.put(3L,"3L");

cache.put(4L,"4L");

cache.put(5L,"5L");

System.out.println(cache);

cache.put(6L,"6L");

cache.put(7L,"7L");

cache.put(8L,"8L");

cache.put(9L,"9L");

cache.put(10L,"10L");

System.out.println(cache);

cache.get(6L);

cache.get(10L);

cache.get(8L);

cache.get(9L);

cache.get(7L);

System.out.println(cache);

cache.put(11L,"11L");

cache.put(12L,"12L");

System.out.println(cache);

}

// 输出

// {1=1L, 2=2L, 3=3L, 4=4L, 5=5L}

// {6=6L, 7=7L, 8=8L, 9=9L, 10=10L}

// {6=6L, 10=10L, 8=8L, 9=9L, 7=7L}

// {8=8L, 9=9L, 7=7L, 11=11L, 12=12L}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值