假设我有一个LinkedHashMap<String, Double> myMap
我添加了pair1
,pair2
,pair3
对。
现在我执行以下循环:
for (Double currDouble : myMap.getValues()) {...}
循环中的第一个Double
对象是pair1
的对象吗? pair2
的第二个?或者它不一定是?
我检查了类似的程序,它似乎确实保持了插入顺序,但是总是这样吗?
答案 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);