集合框架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遍历元素的时候,遍历的顺序是以数据的存入的顺序。
因为LinkedHashMap在HashMap的Entry[]对象中,继承Entry对象扩充了自己的Entry对象能力,增加了before和after属性,使得数据存入以后,成为一个双向链表的形式。因为双向链表的处理,所以LinkedHashMap的数据写入性能没有HashMap高。
LinkedHashMap的数据写入也是调用父类的put方法(已经在HashMap里面介绍了put方法了),而重写了addEntry方法。对于Entry对象的处理,主要在于建立双向链表,使得由header对象开始,与每次加入的对象成为双向链表。
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());}}}