2013-09-27 219 views
0

我無法在文檔中證實這一點,但如果我有一個LinkedHashMap,並且我調用keySet()並遍歷這個集合,它會保證以迭代順序迭代嗎?LinkedHashMap遍歷鍵遍歷

+0

是的,它有保證 – Ilya

回答

2

是的。 請參閱該文檔(你看不到),在這裏:http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashMap.html

哈希表和Map接口的鏈接列表實現,具有 預知的迭代順序。該實施方式與HashMap 的不同之處在於其保持通過其所有 條目運行的雙向鏈表。此鏈接列表定義了迭代排序,通常是鍵被插入到地圖 (插入順序)中的順序。請注意,如果將鍵 重新插入到地圖中,則插入順序不會受到影響。 (如果 m.put(K,V)是當m.containsKey(K)將真 之前立即調用返回調用的密鑰k被重新插入到地圖米)

3

它在指定的Map文檔:

Map接口提供了三個集合視圖,其允許地圖的內容應被視爲一組鍵,集合的值,或設定鍵 - 值映射的。地圖的順序被定義爲地圖集合視圖上的迭代器返回它們的元素的順序。一些地圖實現,例如TreeMap類,對它們的順序做出了特定的保證;其他人,如HashMap類,不。

這意味着對於LinkedHashMap,所有的3種方法 - values()keySet()entrySet(),他們每個人提供3個不同的集合視圖的,保證在插入順序進行迭代。