LinkedHashMap迭代键

时间:2013-09-27 19:04:29

标签: java linkedhashmap

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

2 个答案:

答案 0 :(得分:3)

Map文档中指定:

  

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

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

答案 1 :(得分:2)

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

  

使用Hash表和Map接口的链表实现   可预测的迭代顺序。此实现与HashMap不同   因为它维护着一个贯穿所有链接的双向链表   条目。该链表定义了迭代排序,即   通常是键插入地图的顺序   (插入顺序)。请注意,如果键是插入顺序不受影响   被重新插入地图。 (如果将密钥k重新插入到地图m中   当m.containsKey(k)返回true时,调用m.put(k,v)   在调用之前。)