keySet values

如果只需要map的key或者value,用map的keySet或values方法无疑是最方便的

// KeySet 获取key
for (Integer key : map.keySet()) {
System.out.println(key);
}

// values 获取value
for (Integer value : map.values()) {
System.out.println(value);
}


entrySet

通过对map entrySet的遍历,也可以同时拿到key和value,这一种也是最常用的遍历方法

for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}


Iterator

Iterator也有其优势:在用foreach遍历map时,如果改变其大小,会报错,但如果只是删除元素,可以使用Iterator的remove方法删除元素

Iterator<Map.Entry<String, Object>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, Object> entry = it.next();
System.out.println(entry.getKey() + ":" + entry.getValue());
// it.remove(); // 删除元素
}


Lambda

java8提供了Lambda表达式支持,语法看起来更简洁,可以同时拿到key和value,不过,经测试,性能低于entrySet,所以更推荐用entrySet的方式

map.forEach((key, value) -> {
System.out.println(key + ":" + value);
});