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

时间:2016-07-31 20:15:34

标签: java linkedhashmap insertion-order

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

现在我执行以下循环:

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

循环中的第一个Double对象是pair1的对象吗? pair2的第二个?或者它不一定是?

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

3 个答案:

答案 0 :(得分:2)

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

所以要回答你的问题,,第一个Double将来自pair1,第二个来自pair2等。鉴于你没有& #39; t将LinkedHashMap设置为访问顺序。

如果您仍然不确定该行为,可以随时通过向LinkedHashMap添加一堆数据来测试它,并像您在问题中描述的那样迭代它。您将看到它将保留广告订单(或设置的访问顺序)。

答案 1 :(得分:2)

是!

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

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

答案 2 :(得分:0)

请参阅Java Class that implements Map and keeps insertion order?

你可以这样做:

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