1

假设我有一个LinkedHashMap<String, Double> myMap我添加pair1的 , pair2,pair3对。

现在我执行以下循环:

for (Double currDouble : myMap.getValues()) {...}

Double循环中的第一个对象会是吗pair1?第二个pair2?还是不必?

我检查了类似的程序,似乎它确实保持了插入顺序,但总是这样吗?

4

3 回答 3

2

默认情况下,LinkedHashMap保留插入顺序。虽然有一个选项可以切换到访问顺序,这可能是令人困惑的因素。

因此,要回答您的问题,的,第一个Double将来自pair1,第二个来自pair2等。鉴于您没有设置LinkedHashMap访问顺序这一事实。

如果您仍然不确定该行为,您始终可以通过向 a 添加一堆数据来测试它LinkedHashMap,并像您在问题中描述的那样对其进行迭代。您会看到它将保留插入顺序(或访问顺序,如果已设置)。

于 2016-07-31T20:23:00.880 回答
2

是的!

从 LinkedHashMap 文档的第一句话开始: ... Map 接口的实现,具有可预测的迭代顺序 .... 这通常是键插入映射的顺序(插入顺序)。

如果重新插入键(可能具有不同的值),它不会更改原始顺序。

于 2016-07-31T20:53:58.143 回答
0

请参阅实现 Map 并保持插入顺序的 Java 类?

你可以这样做:

for (String key : myMap.getKeys())
  Double d = myMap.get(key);
于 2016-07-31T20:26:41.467 回答