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会设置为上一个结点 。删除的时候也会修改这两个指针,这样就是一个双链表结构了,遍历的时候自然就能按照插入的顺序来给出结果了。