一文详解 利用LinkedHashMap实现Lru机制

作者阿里云代理 文章分类 分类:linux图文教程 阅读次数 已被围观 722

LinkedHashMap 根据链表中元素的顺序可以分为:
按插入顺序的链表,和按访问顺序(调用get方法)的链表

按插入顺序的链表,这个不做介绍。
下边来说明按照“访问顺序的(调用get方法)的链表”的实现原理:

一、创建链表

LinkedHashMap<String, Bitmap> map = new LinkedHashMap<String, Bitmap>(0, 0.75f, true);

二、插入元素(key0,value0)、(key1,value1)后的链表结构

LinkedHashMap是一个双向链表,向链表中插入两个元素key0和key1后,双向链表的结构如下图所示:

map.put(key0, value0);
map.put(key1, value1);

这里写图片描述

三、调用map.get(key0)后的链表结构如下:

map.get(key0);

这里写图片描述

四、移除最早使用的元素时:

header.next()的数据为 (key1,value1) 

注:
每次调用 map.get(key)方法 后,都会将该元素放到Header元素的上一个;每次移除时,都会先移除header.next()元素;从而达到了保留最近使用的元素,移除了最早使用的元素。这就是Lru的实现原理。

= THE END =

 

本公司销售:阿里云、腾讯云、百度云、天翼云、金山大米云、金山企业云盘!可签订合同,开具发票。

我有话说: