读书人

集合框架地图学习笔记一LinkedHashMap

发布时间: 2013-03-28 10:20:24 作者: rapoo

集合框架map学习笔记一LinkedHashMap

Map:

1、HashMap

2、LinkedHashMap

3、IdentityHashMap

4、WeakHashMap

5、TreeMap

6、EnumMap

7、ConcurrentHashMap

8、ConcurrentSkipListMap

今天主要学习的是LinkedHashMap。


1、LinkedHashMap

LinkedHashMap是继承HashMap的一个子类,所有存储的结构也是Entry[],同样是以key的hashCode值来计算key-value所在的Entry[]桶所在的下标。来实现快速的存放和查询。但是LinkedHashMap除了继承父类HashMap的功能以外,解决了HashMap无序的问题。

LinkedHashMap遍历元素的时候,遍历的顺序是以数据的存入的顺序。


2、LinkedHashMap的数据存放

因为LinkedHashMap在HashMap的Entry[]对象中,继承Entry对象扩充了自己的Entry对象能力,增加了before和after属性,使得数据存入以后,成为一个双向链表的形式。因为双向链表的处理,所以LinkedHashMap的数据写入性能没有HashMap高。

LinkedHashMap的数据写入也是调用父类的put方法(已经在HashMap里面介绍了put方法了),而重写了addEntry方法。对于Entry对象的处理,主要在于建立双向链表,使得由header对象开始,与每次加入的对象成为双向链表。

集合框架地图学习笔记一LinkedHashMap

public class TestLinkedHashMap {/** * @param args */public static void main(String[] args) {LinkedHashMap<Integer, String> hm1 = new LinkedHashMap<Integer, String>(16, 0.75f,true);hm1.put(1,"1");hm1.put(2,"2");hm1.put(3,"3");hm1.put(4,"4");hm1.put(5,"5");hm1.get(2);hm1.get(4);hm1.get(3);hm1.get(5);hm1.get(1);Iterator iter1 = hm1.keySet().iterator();while(iter1.hasNext()){System.out.println(iter1.next());}}}

结果为:

2
4
3
5
1

读书人网 >编程

热点推荐