Map中LinkedHashMap和HashMap的区别

LinkedMap继承了HashMap,最大的区别就是LinkedMap遍历的时候可以按照put的顺序给出结果。java

demo:指针

public static void main(String[] args) {
    Map<String, String> map = new LinkedHashMap<String, String>();
    map.put("11", "1");
    map.put("12", "2");
    map.put("10", "3");
    map.put("15", "0");
    map.put("14", "0");
    Iterator iterator = map.entrySet().iterator();
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }
}

   打印结果:code

11=1
12=2
10=3
15=0
14=0

 能够看到打印的结果彻底是插入的顺序。继承

LinkedHashMap为何有这种功能呢。 其实很简单。LinkedHashMap在Entry<K,V>  中添加了两个指针,before,after.it

 在put的时候上一个结点会把本身的after设置为新节点,新节点的before会设置为上一个结点  。删除的时候也会修改这两个指针,这样就是一个双链表结构了,遍历的时候天然就能按照插入的顺序来给出结果了。class

相关文章
相关标签/搜索