`
shootyou
  • 浏览: 82442 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

LinkedHashMap实现一个固定容量的基于最近最少使用算法的缓存类

阅读更多

固定容量的基于最近最少使用算法的LinkedHashMap.可用作简单缓存.使用方法与LinkedHashMap一致.

利用LinkedHashMap实现简单的缓存,必须实现removeEldestEntry方法,具体参见JDK文档.另外还加入了一个可重入的互斥锁定.

使用说明:LRU算法是LinkedHashMap本身通过双向链表来实现,当某个位置被使用(例如get操作),通过调整链表的指向将该位置调整到头位置,新加入的内容直接放在链表头,如此一来,最近被使用的内容就向链表头移动,需要替换时(已经达到容量时),链表最后的位置就是最近最少使用的位置。

源自:http://www.blogjava.net/killme2008/archive/2008/01/14/149645.html

分享到:
评论

相关推荐

    LinkedHashMap的实现原理

    这是关于Java学习的主要针对LinkedHashMap的实现原理

    LinkedHashmap的使用

    这个demo主要讲解了LinkedHashmap的使用,希望可以帮助需要的同学.

    HashMap,HashTable,LinkedHashMap,TreeMap的区别

    LinkedHashMap 的实现类似于 HashMap,但是它维持了一个双向链表,以便于维持顺序。 HashTable HashTable 是一种同步的 Map 实现类,它继承自 Dictionary 类,实现了 Map 接口。HashTable 是线程安全的,所有操作...

    Java 中常用缓存Cache机制的实现

    CacheManager 类是一个简单的缓存管理器,它使用 HashMap 来存储缓存对象。 CacheManager 类提供了多种方法来操作缓存,例如获取缓存对象、设置缓存对象、清除缓存对象等。 1. 获取缓存对象: CacheManager 类提供...

    深入Java集合学习系列(四):LinkedHashMap的实现原理

    深入Java集合学习系列(四): LinkedHashMap的实现原理

    实现 LRU 算法,和 Caffeine 和 Redis 中的缓存淘汰策略.docx

    通过一个特殊的构造函数,三个参数的这种,最后一个布尔值参数表示是否要维护最近访问顺序,如果是 true 的话会维护最近访问的顺序,如果是 false 的话,只会维护插入顺序。保证维护最近最少使用的顺序。...

    LinkedHashMap

    LinkedHashMap源代码,Java中Map的一种实现子类。

    Java集合系列(LinkedHashMap+LinkedList+ArrayList)

    LinkedList 的实现方式是使用双向链表来存储数据,每个节点中包含前一个节点和后一个节点的引用。 LinkedList 和 ArrayList 的主要区别在于,LinkedList 可以快速地插入和删除元素,而 ArrayList 需要重新分配内存...

    ImageLoaderDemo图片三级缓存

    分成三级对图片进行缓存,第一级采用LinkedHashMap(LRU算法),第二季采用ConcurrentHashMap线程安全控制

    leetcode下载-LruCache:实现LRU算法的Cache类

    SDK中的LruCache类参考实现的LRU算法缓存存储类. 原理 之前分析过Lru算法的实现方式:HashMap+双向链表,参考链接: 这里主要介绍Android SDK中LruCache缓存算法的实现. 构造函数 LruCache只有一个构造函数,并且有一个...

    Java和Android的LRU缓存及实现原理

    Android提供了LRUCache类,可以方便的使用它来实现LRU算法的缓存。Java提供了LinkedHashMap,可以用该类很方便的实现LRU算法,Java的LRULinkedHashMap就是直接继承了LinkedHashMap,进行了极少的改动后就可以实现LRU...

    Java和Android的Lru缓存及其实现原理

     Android提供了LRUCache类,可以方便的使用它来实现LRU算法的缓存。Java提供了LinkedHashMap,可以用该类很方便的实现LRU算法,Java的LRULinkedHashMap是直接继承了LinkedHashMap,进行了极少的改动后可以实现LRU...

    LruCache与图片的二次采样

    为了保证内存的使用始终维持在一个合理的范围...这个类非常适合用来缓存图片,它的主要算法原理是把最近使用的对象用强引用存储在 LinkedHashMap 中,并且把最近最少使用的对象在缓存值达到预设定值之前从内存中移除。

    尚硅谷-深入java8的集合4:LinkedHashMap的实现原理.pdf

    ·课程共30天,715个知识视频小节,涉及主流Java使用的方方面面,全而不冗余 ·全程内容涵盖数据结构、设计模式、JVM内存结构等深度技术 ·企业级笔试面试题目深入源码级讲解,拒绝死记硬背 4.代码量更大、案例更...

    java集合-LinkedHashMap的使用

    LinkedHashMap是Java中的一种特殊类型的HashMap,它保留了插入顺序,即按照元素插入的先后顺序进行排序

    JAVA工具类

    LruCacheUtils - 基于LinkedHashMap实现LRU缓存的工具类 MemcachedUtils - 基于memcached的工具类 RedisUtils - 基于redis的工具类,与redis的集群配置无缝结合 db JdbcUtils - 操作jdbc的工具类 MongodbUtils - ...

    leetcode跳跃-datastructure:数据结构

    基于LinkedHashMap实现LRU算法 PalindromeBaseArray 基于数组实现回文串的判断 链表练习 SingleLinkedList 实现单链表的增、删、改、查操作 LRUBaseLinkedList 基于单链表实现LRU算法 PalindromeBaseLinked 基于链表...

    今天会是有Offer的一天么:面试时不要再问我LinkedHashMap了

    要注意一点的是LinkedHashMap是可以实现LRU缓存策略的,前提是你需要将LinkedHashMap中的accessorder属性设置为true。 因此你基本可以认为LinkedHashMap是LinkedList和HashMap的一个组合。 LinkedHashMap简介 ...

    Java 容器.pdf_电子版pdf版

    4. LinkedHashMap:使用双向链表来维护元素的顺序,顺序为插入顺序或者最近最少使用(LRU)顺序。 设计模式 Java 容器中使用了多种设计模式,如迭代器模式、适配器模式等。 1. 迭代器模式:Collection 继承了 ...

Global site tag (gtag.js) - Google Analytics