java设置一个矩阵类 java设计一个矩形类rectangle_缓存

        

思路主要是借助map和list来实现一个LRU缓存的实现,其中map用于快速查找,list用于顺序存储。map的key为数据的key,Value为list的元素指针。List中也存放具体的元素key-Value值。其中分别实现的函数主要包括有参构造函数,析构函数,put和get方法,以及返回整个LRU缓存的数据get_list方法。        先看看构造函数和析构函数的实现,其中构造函数为有参数构造。参数cap代表了LRU缓存的容量。当存放的数据多于cap,则会剔除最老的数据。

java设置一个矩阵类 java设计一个矩形类rectangle_缓存_02

       

接下来看看存放数据的put方法,实现源码如下。

java设置一个矩阵类 java设计一个矩形类rectangle_缓存_03

     

put方法存放数据的时候,首先查找一下是否存在该Key,如果存在则先删除该元素,然后再重新加入list中头部,这样当前元素就是最热的数据了。如果不存在该key-Value,首先存放新的key-Value到list头部,然后需要看看LRU中是否满了,如果满了则需要释放list最后一个数据。比如存放第一个数据,键值对为<2,"DOG">时候,当再次放入一个新的数据,<3,"CAT">的时候,LRU缓存是这样的。

java设置一个矩阵类 java设计一个矩形类rectangle_设计一个矩形类rectangle_04

   

 我们来看看get方法是如何获取元素的,源码如下。

java设置一个矩阵类 java设计一个矩形类rectangle_缓存_05

     

get方法的思路比较简单,就是先在map中查找是否存在当前Key,如果不存在,则直接返回。如果存在,则需要更新当前数据的热度,也就是需要将当前元素移动到list头部位置。这里还是先从list中删除该Key-Value,然后再存放到list头部即可。        最后来看一下测试案例,测试案例比较简单。

java设置一个矩阵类 java设计一个矩形类rectangle_设计一个矩形类rectangle_06