java中遍历Map的几种常见方式,如下:
第一种:
通过遍历键取值(效率低)
Map<String,Object> map = new HashMap();
map.put("a","1");
map.put("b","2");
map.put("c","3");
for (String str : map.keySet()) {
System.out.println("key:"+ str + "\tvalue:" + map.get(str));
}
第二种:
for-each循环中使用entries来遍历这是最常见的并且在大多数情况下也是最可取的遍历方式,取键值都可以。并且是在java 1.5引入的,删除指定元素不能使用remove();方法否则会报java.util.ConcurrentModificationException。
for (Map.Entry<String, Object> entry : map.entrySet()) {
System.out.println("key:"+ entry.getKey() + "\tvalue:" + entry.getValue());
}
第三种:
在java1.5之前是常见的一种方式,遍历基本上都是通过迭代器(Iterator)来进行遍历,看似代码比较冗余也有其优点,调用iterator.remove()来删除entries,如果在for-each遍历中使用remove()方法,结果和预期不一样会报java.util.ConcurrentModificationException并发修改异常,该性能和foreach类同。
Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String, Object> next = iterator.next();
System.out.println("key:"+next.getKey()+"\tvalue:"+next.getValue());
}
第四种:
直接遍历值,在foreach循环中遍历keys或values。如果只需key或value可以通过KeySet和values来实现遍历而不是用entryset.。代码简介,并且效率要好,代码简洁。
for (Object o : map.values()) {
System.out.println("value;"+o);
}
第五种:
java8遍历的写法,效率更高并行处理。
map.forEach((k,v)-> System.out.println("key:"+k+"\tvalue:"+v));