LinkedHashMap的构造方法有一个是这样子的:
1 public LinkedHashMap(int initialCapacity, 2 float loadFactor, 3 boolean accessOrder) { 4 super(initialCapacity, loadFactor); 5 this.accessOrder = accessOrder; 6 }
参数说明:
- initialCapacity 初始容量大小,使用无参构造方法时,此值默认是16
- loadFactor 加载因子,使用无参构造方法时,此值默认是 0.75f
- accessOrder false: 基于插入顺序 true: 基于访问顺序
重点看看accessOrder的作用,使用无参构造方法时,此值默认是false。
那么设置成true的时候会是什么样子的呢?
1 public static void main(String[] args) { 2 Map<String, String> map = new LinkedHashMap<String, String>(16,0.75f,true); 3 map.put("1", "a"); 4 map.put("2", "b"); 5 map.put("3", "c"); 6 map.put("4", "e"); 7 8 for (Iterator<String> iterator = map.values().iterator(); iterator 9 .hasNext();) { 10 String name = (String) iterator.next(); 11 System.out.print(name); 12 } 13 }
上面的代码打印结果为:abce,很正常,按照加入的顺序打印
现在增加两行代码:
1 public static void main(String[] args) { 2 Map<String, String> map = new LinkedHashMap<String, String>(16,0.75f,true); 3 map.put("1", "a"); 4 map.put("2", "b"); 5 map.put("3", "c"); 6 map.put("4", "e"); 7 8 //new add 9 map.get("1"); 10 map.get("2"); 11 12 for (Iterator<String> iterator = map.values().iterator(); iterator 13 .hasNext();) { 14 String name = (String) iterator.next(); 15 System.out.print(name); 16 } 17 }
打印结果为:ceab
这就是基于访问的顺序,get一个元素后,这个元素被加到最后(使用了LRU 最近最少被使用的调度算法)
http://www.cnblogs.com/yejg1212/archive/2013/04/01/2992921.html
相关推荐
这是关于Java学习的主要针对LinkedHashMap的实现原理
LinkedHashMap源代码,Java中Map的一种实现子类。
要注意一点的是LinkedHashMap是可以实现LRU缓存策略的,前提是你需要将LinkedHashMap中的accessorder属性设置为true。 因此你基本可以认为LinkedHashMap是LinkedList和HashMap的一个组合。 LinkedHashMap简介 ...
java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
这个demo主要讲解了LinkedHashmap的使用,希望可以帮助需要的同学.
深入Java集合学习系列(四): LinkedHashMap的实现原理
HashMap,HashTable,LinkedHashMap,TreeMap的区别
LinkedHashMap是Java中的一种特殊类型的HashMap,它保留了插入顺序,即按照元素插入的先后顺序进行排序
在理解了#7 介绍的HashMap后,我们来学习LinkedHashMap的工作原理及实现。首先还是类似的,我们写一个简单的LinkedHashMap的程序: LinkedHashMap<String> lmap = new LinkedHashMap(); lmap.put(语文, 1)...
JavaLinkedHashMap源码解析Java开发Java经验技巧共7页.pdf.zip
本教程特点: 1.更适合零基础学员: ·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白 ·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅...
主要介绍了Java集合框架源码分析之LinkedHashMap详解,内容包括了linkedhashmap的简介和源码剖析以及关于LinkedHashMap的源码总结,内容丰富,需要的朋友可以参考下。
主要介绍了 java HashMap,TreeMap与LinkedHashMap的详解的相关资料,这里提供实例代码,帮助大家学习理解 这部分的内容,需要的朋友可以参考下
Java集合系列(LinkedHashMap+LinkedList+ArrayList)
将LinkedHashMap转换为json,反之亦然 如何使用 LinkedHashMap requestData = new LinkedHashMap(); LinkedHashMap auth =新的LinkedHashMap(); auth.put(“ ServiceName”,“ Login”); auth.put(“ ...
RiteLinked——类似HashMap的容器,以用户可控的顺序保存它们的键值对RiteLinked提供了LinkedHashMap和LinkedHashSet更多最新版本。您可以在std或no_std环境中轻松使用它。一些实用的功能组合,支持,帮助您更好地将...
主要介绍了Java使用LinkedHashMap进行分数排序的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Set是使用LinkedHashMap在Go(Golang)中简单的Set数据结构实现。 该库允许您获取一组int64或string而没有重复的项目。 用法 package main import ( "fmt" "github.com/StudioSol/set" ) func main () { ...
主要为大家详细介绍了Java集合系列之LinkedHashMap源码分析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下