2013-09-27 223 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个不同的集合视图的,保证在插入顺序进行迭代。