Java数据结构的使用之LinkedHashMap

Java中使用频率最高的三种数据结构,Set,List,Map;通过对他们各自接口的实现方法的研究并加以组合,可以做到很多有效率的事情;

LinkedHashMap:来自与hashMap,我们都知道,HashMap的数组存储的数据结构entry是一个单链表;而LinkedHashMap所做出的改进就在于其重写了hashmap中的entry数据结构,加入before,after使其成为了双链表,同时新建header用于存储当前元素;LinkedHashMap的用法于其父类hashmap相似,详细不表;

这里我们关注的是通过对Linkedhashmap重写hashmap的方法的研究发现在addentry这个方法里面的removeEldestEntry这个函数,可以帮助我们判断并删除最近使用的元素;简单的代码如下

public class LRUCache2<K,V>extends LinkedHashMap{

        private final int MAX_CHCHE_SIZE;
        public LRUCache2(int cacheSize)
        {
            super((int) Math.ceil(cacheSize / 0.75), 0.75f, true);
            MAX_CHCHE_SIZE=cacheSize;
        }

        @Override
        protected boolean removeEldestEntry(Map.Entry eldest){
            return size()>MAX_CHCHE_SIZE;
        }


    }

关键处在于继承LinkedHashMap,并实现removeEntrySet方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值