![](/img/trans.png)
[英]why map.keyset() returns set view but map.values() returns collections in Java?
[英]Same iteration order on Map.keySet and 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);
...保證兩次打印相同的序列?
如果沒有,是否有任何保證,例如java.util.HashMap
?
不,沒有保證,雖然在實踐中它會發生(沒有充分的理由讓地圖為鍵和值使用不同的迭代器)。
如果要保證迭代順序,請迭代entrySet()
:
for (Map.Entry<Integer,Integer> entry : map.entrySet())
// ...
由於您詢問HashMap
,請注意,由於mapbeing重新定義,對地圖的任何更改都可能會更改迭代順序。
不,不保證。 一個是Set
,一個是Collection
,既不保證訂單。
如果您想保留訂單。 可以使用entrySet()
幫助您使用LinkedHashMap()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.