Chinaunix首页 | 论坛 | 博客
  • 博客访问: 376173
  • 博文数量: 214
  • 博客积分: 770
  • 博客等级: 军士长
  • 技术积分: 1969
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-08 01:22
文章分类

全部博文(214)

文章存档

2013年(110)

2012年(104)

我的朋友

分类: Android平台

2013-07-31 15:13:35


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

 public LinkedHashMap(int initialCapacity, float loadFactor,  boolean accessOrder) 
          
        super(initialCapacity, loadFactor); 
        this.accessOrder = accessOrder; 
 }

参数说明:

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

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

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

复制代码
 public static void main(String[] args) 
{   
    Map map = new LinkedHashMap(16,0.75f,true); 
    map.put("1", "a");
    map.put("2", "b"); 
  map.put("3", "c");  
    map.put("4", "e"); 
 for (Iterator iterator = map.values().iterator(); iterator.hasNext();) {
  String name = (String) iterator.next();
   System.out.print(name); 
}

上面的代码打印结果为: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.         for (Iterator<String> iterator = map.values().iterator(); iterator
  12.                 .hasNext();) {
  13.             String name = (String) iterator.next();
  14.             System.out.print(name);
  15.         }
  16.     }


打印结果为:ceab 

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

阅读(915) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~