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.。代码简介,并且效率要好,代码简洁。
第五种:
java8遍历的写法,效率更高并行处理。
map.forEach((k,v)-> System.out.println("key:"+k+"tvalue:"+v));