我知道Hashmap如何在內部工作。 Linkedhashmap擴展了Hashmap類。那麼Linkedhashmap如何維護插入順序。我已經閱讀了Linkedhashmap的javadoc,但沒有關於此的任何細節。有人能幫我理解嗎?linkedhashmap如何維護插入順序
在此先感謝。
我知道Hashmap如何在內部工作。 Linkedhashmap擴展了Hashmap類。那麼Linkedhashmap如何維護插入順序。我已經閱讀了Linkedhashmap的javadoc,但沒有關於此的任何細節。有人能幫我理解嗎?linkedhashmap如何維護插入順序
在此先感謝。
http://docs.oracle.com/javase/7/docs/api/java/util/LinkedHashMap.html。
實現背後的想法很簡單。它擴展了常規的hashMap(因此它具有所有的hashMap好吃的東西),但是在添加元素時也構建了雙鏈表。
(條目也從HashMap.Entry擴展,使他們有一個指針後和前) 因此,所有的條目是有序HEAD - >條目1 < - > ENTRY2 ... < - TAIL
,並在同時保存在標準的HashSet中(我假設你熟悉實現)。
現在迭代時使用它的條目鏈接列表。
它按照插入順序維護地圖中條目的鏈接列表。這有助於維持迭代順序和元素將在他們第一次中添加的順序返回
你想閱讀這篇文章也如當你開始比較,你可能會更好地理解:Difference between HashMap, LinkedHashMap and TreeMap
的Javadoc應該很少揭示班級如何在裏面工作。你有沒有嘗試過查看'LinkedHashMap'的源代碼? – cherouvim
看到這個:http://javaopensourcecode.blogspot.co.il/2012/06/linkedhashmap.html – Maroun
真的很好的鏈接... – Newbie