複製程式碼如下:
公共靜態無效主(字串參數[]){
Map<String, Object> map = new HashMap<String, Object>();
地圖.put(“a”,“A”);
地圖.put(“b”,“B”);
地圖.put(“c”,“C”);
// keySet 遍歷
Iterator<String> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
字串鍵 = iterator.next();
字串值=(字串)map.get(鍵);
System.out.println(值);
}
for (字串鍵:map.keySet()) {
字串值=(字串)map.get(鍵);
System.out.println(值);
}
//entrySet遍歷
Iterator<Entry<String, Object>> iterator1 = map.entrySet().iterator();
while (iterator1.hasNext()) {
字串值 = (String) iterator1.next().getValue();
System.out.println(值);
}
for (Entry<String, Object> 條目:map.entrySet()) {
字串值=(String)entry.getValue();
System.out.println(值);
}
//
for (物件 str : map.values()) {
System.out.println(str);
}
}
關於效率問題:
如果你使用HashMap
同時遍歷key與value時,keySet與entrySet方法的效能差異取決於key的具體情況,例如複雜度(複雜物件)、離散度、衝突速率等。取出所有key和value的操作都是有效能開銷的,當這個損失小於HashMap查找value的開銷時,entrySet的效能優勢就會體現出來。 ,keySet可能反而會高效,運作比entrySet少10%。 ,entrySet的優勢將會明顯體現。
只遍歷key時,keySet方法比較合適,因為entrySet將無用的value也給取出了,浪費了效能和空間。
只遍歷value時最佳,使用vlaues方法是選擇,entrySet會略好於keySet方法。
如果你使用TreeMap
同時遍歷key和value時,與HashMap不同,entrySet的效能與keySet不同。因此,遍歷TreeMap時強烈建議使用entrySet方法。