日常开发中Map集合遍历是经常使用的,下面介绍几种遍历方法的差异。
(推荐教程:java课程)
1、Iterator+entrySet写法【推荐JDK8以下】,Map.Entry是Map接口的内部接口,获取迭代器,然后依次取出每个迭代器里面的Map.Entry
Iterator<Map.Entry<Integer,String>> iterator=map.entrySet().iterator(); while(iterator.hasNext()){ Map.Entry<Integer,String> entry=iterator1.next(); System.out.println(entry.getKey()); System.out.println(entry.getValue()); }
2、Iterator+keyset写法【不推荐,只能获取key,然后通过key获取对应的value,重复计算】
Iterator<Integer> iterator=map.keySet().iterator(); while (iterator.hasNext()){ Integer key=iterator.next(); System.out.println(key); System.out.println(map.get(key)); }
3、foreach遍历方式【JDK8以下推荐写法】
for(Map.Entry<Integer,String> entry:map.entrySet()){ System.out.println(entry.getKey()); System.out.println(entry.getValue()); };
4、lambda表达式遍历【JDK8推荐写法,简捷】
map.forEach((key,value)->{ System.out.println(key); System.out.println(value); });
5、stream流遍历Map【JDK8不推荐写法,重复计算】
map.entrySet().stream().forEach((Map.Entry<Integer, String> entry) -> { System.out.println(entry.getKey()); System.out.println(entry.getValue()); });
如果Map集合存在一些中间处理,可以过滤操作,使用流式遍历也很方便。