LinkedHashMap 迭代密钥



我无法在文档中确认这一点,但是如果我有一个LinkedHashMap并且我在其上调用keySet()并迭代该集合,它是否保证按插入顺序迭代?

它在Map文档中指定:

Map 接口提供三个集合视图,允许将映射的内容视为一组键、值集合或一组键值映射。映射的顺序定义为映射集合视图上的迭代器返回其元素的顺序。一些映射实现(如 TreeMap 类)对其顺序做出特定的保证;其他的,如HashMap类,则没有。

这意味着对于LinkedHashMap,所有 3 种方法 - values()keySet()entrySet() ,每种方法都提供 3 种不同的集合视图,保证按插入顺序迭代。

是的。在此处查看文档(您看不到):http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashMap.html

Map接口的哈希表和链表实现,具有 可预测的迭代顺序。此实现与哈希映射不同 因为它维护一个双向链表,贯穿其所有 条目。此链表定义了迭代顺序,即 通常键插入映射的顺序 (插入顺序)。请注意,如果某个键,则广告顺序不会受到影响 将重新插入到地图中。(如果 m.put(k, v) 在 m.containsKey(k) 返回 true 时被调用 在调用之前。

最新更新