本文介绍了Map.keySet和Map.values的迭代顺序相同吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
对于像这样的地图:
Map<Integer, Integer> map = ...;
map.put(1, 1);
map.put(2, 2);
map.put(3, 3);
map.put(4, 4);
这是代码...
for (Integer i : map.keySet()) System.out.println(i);
for (Integer i : map.values()) System.out.println(i);
...保证两次打印相同的顺序?
...guaranteed print the same same sequence twice?
如果没有,例如 java.util.HashMap 有保证吗?
If not, are there any guarantees in for example java.util.HashMap
?
推荐答案
不,尽管实际上会发生,但不能保证(没有充分的理由让地图对键和值使用不同的迭代器)。
No, there is no guarantee, although in practice it will happen (there's no good reason for the map to use a different iterator for the keys and values).
如果要保证迭代顺序,请迭代 entrySet()
:
If you want to guarantee iteration order, iterate the entrySet()
:
for (Map.Entry<Integer,Integer> entry : map.entrySet())
// ...
由于您询问有关 HashMap
的信息,因此请注意重新映射后,地图可能会更改迭代顺序。
Since you ask about HashMap
, note also that any changes to the map will potentially change iteration order, as a result of the mapbeing rehashed.
这篇关于Map.keySet和Map.values的迭代顺序相同吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!