博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LinkedHashMap的accessOrder的作用
阅读量:6147 次
发布时间:2019-06-21

本文共 1670 字,大约阅读时间需要 5 分钟。

LinkedHashMap的构造方法有一个是这样子的:

1 public LinkedHashMap(int initialCapacity,2              float loadFactor,3                          boolean accessOrder) {4         super(initialCapacity, loadFactor);5         this.accessOrder = accessOrder;6     }

参数说明:

  1. initialCapacity   初始容量大小,使用无参构造方法时,此值默认是16
  2. loadFactor       加载因子,使用无参构造方法时,此值默认是 0.75f
  3. accessOrder   false: 基于插入顺序     true:  基于访问顺序 

重点看看accessOrder的作用,使用无参构造方法时,此值默认是false。

那么设置成true的时候会是什么样子的呢?

1     public static void main(String[] args) { 2         Map
map = new LinkedHashMap
(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
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
map = new LinkedHashMap
(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
iterator = map.values().iterator(); iterator13 .hasNext();) {14 String name = (String) iterator.next();15 System.out.print(name);16 }17 }

打印结果为:ceab 

这就是基于访问的顺序,get一个元素后,这个元素被加到最后(使用了LRU 最近最少被使用的调度算法)

 

 

 

转载于:https://www.cnblogs.com/yejg1212/archive/2013/04/01/2992921.html

你可能感兴趣的文章
我的友情链接
查看>>
NGUI Label Color Code
查看>>
.NET Core微服务之基于Polly+AspectCore实现熔断与降级机制
查看>>
vue组件开发练习--焦点图切换
查看>>
浅谈OSI七层模型
查看>>
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>
python实现牛顿法求解求解最小值(包括拟牛顿法)【最优化课程笔记】
查看>>
js中var、let、const的区别
查看>>
腾讯云加入LoRa联盟成为发起成员,加速推动物联网到智联网的进化
查看>>
从Python2到Python3:超百万行代码迁移实践
查看>>
Windows Server已可安装Docker,Azure开始支持Mesosphere
查看>>
简洁优雅地实现夜间模式
查看>>
react学习总结
查看>>
微软正式发布PowerShell Core 6.0
查看>>
Amazon发布新的会话管理器
查看>>
InfoQ趋势报告:DevOps 和云计算
查看>>
舍弃Python,为什么知乎选用Go重构推荐系统?
查看>>
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>