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

相關文章
相關標籤/搜索