LinkedHashMap 中的集合(值)是否保留插入顺序?

Does a collection (values) from LinkedHashMap preserve the insertion order?

假设我有一个 LinkedHashMap<String, Double> myMap,我添加了 pair1pair2pair3 对。

现在我执行以下循环:

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

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

我用类似的程序检查过,它似乎确实保持了插入顺序,但情况总是如此吗?

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

所以要回答你的问题,,第一个 Double 来自 pair1,第二个来自 pair2 等等。给定事实上,您没有将 LinkedHashMap 设置为访问顺序。

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

Java Class that implements Map and keeps insertion order?

你可以这样做:

for (String key : myMap.getKeys())
  Double d = myMap.get(key);

是的!

来自 LinkedHashMap 文档的第一句: ... Map 接口的实现,具有可预测的迭代顺序....这通常是将键插入地图的顺序(插入顺序)。

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