美文网首页
LruCache原理

LruCache原理

作者: 钟离四郎 | 来源:发表于2018-12-08 17:02 被阅读0次

    创建LruCache对象,重写其中的sizeOf方法:


    然后看看LruCache内部长啥样子???


    看到A处,这里有个LinkedHashMap,这个是专门来存要缓存的对象,这个数据结构有个特点即链表+HashMap,HashMap是无序的,而LinkedHashMap是有序的,插入顺序与输出顺序相同,它还一个特点就是可以根据访问顺序排序,这个特点很重要,后期缓存满的时候要移除“最近最少使用”的缓存对象就很方便了,如下:

    如果你对LinkedHashMap不了解可以看下这片文章:LinkedHashMap 的实现原理
    接下来目光移到B处,看看LruCache的put方法:

    看到标记D处,trimToSize方法:

    看完put,再来看看get方法:


    接上图看下,mapValue为null又做些什么呢?如下:


    总结

    LruCache能够按照最近最少使用的思想来缓存对象,在于其内部使用了LinkedHashMap这种数据结构来缓存对象,这种数据结构有个主要特点:插入顺序与输出顺序相同,同时还能够根据访问顺序排序,理解这一点,再去看put、get源码就很简单了,总的来说LruCache的源码也是很简单的。

    相关文章

      网友评论

          本文标题:LruCache原理

          本文链接:https://www.haomeiwen.com/subject/ifvqhqtx.html