Map中LinkedMap和HashMap的区别

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

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());
    }
}

   打印结果:

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

 可以看到打印的结果完全是插入的顺序。

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

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

你可能感兴趣的:(java,集合,HashMap,LinkedHashMap,java集合,双链表)