java中HashMap的七种遍历方式小结
作者:IT枫斗者
本文主要介绍了java中HashMap的七种遍历方式小结,包括迭代器,For Each,Lambda,Streams API等,具有一定的参考价值,感兴趣的可以了解一下
HashMap遍历方式分类
- HashMap的多种遍历方式从大体中归类 , 可以分为以下4类 :
- 迭代器(Iterator)
- For Each
- Lambda (JDK 1.8 +)
- Streams API (JDK 1.8 +)
- 但是每种方式又有不同的实现类型 :
- 使用迭代器(Iterator)EntrySet / KeySet 的方式进行遍历;
- 使用 For Each EntrySet / For Each KeySet 的方式进行遍历;
- 使用 Lambda 表达式的方式进行遍历;
- 使用 Streams API 单线程 / 多线程 的方式进行遍历;
迭代器(Iterator)EntrySet
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); Iterator<Map.Entry<String, String>> iterator = hashMap.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<String, String> entry = iterator.next(); Object key = entry.getKey(); Object val = entry.getValue(); System.out.println("key : " + key + "-----" + "val : " + val); }
迭代器(Iterator)KeySet
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); Iterator<String> iterator = hashMap.keySet().iterator(); while (iterator.hasNext()) { String key = iterator.next(); Object val = hashMap.get(key); System.out.println("key : " + key + "-----" + "val : " + val); }
For Each EntrySet
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); for (Map.Entry<String, String> entry : hashMap.entrySet()) { Object key = entry.getKey(); Object val = entry.getValue(); System.out.println("key : " + key + "-----" + "val : " + val); }
For Each KeySet
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); for (String key : hashMap.keySet()) { Object val = hashMap.get(key); System.out.println("key : " + key + "-----" + "val : " + val); }
Lambda
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); hashMap.forEach((key , val) -> System.out.println("key : " + key + "-----" + "val : " + val));
Streams API 单线程
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); hashMap.entrySet().stream().forEach((entry) -> { Object key = entry.getKey(); Object val = entry.getValue(); System.out.println("key : " + key + "-----" + "val : " + val); });
Streams API 多线程
HashMap<String , String> hashMap = new HashMap<>(); hashMap.put("1","name"); hashMap.put("2","age"); hashMap.entrySet().stream().parallel().forEach((entry) -> { Object key = entry.getKey(); Object val = entry.getValue(); System.out.println("key : " + key + "-----" + "val : " + val); });
我们不能在遍历Map时使用map.remove()方法 , 否则就会抛出异常 :
java.util.ConcurrentModificationException , 这种办法是非安全的 , 我们可以使用Iterator.remove() ,或者是Lambda 中的 removeIf() , 或者是Stream 中的 filter() 过滤或者删除相关数据
到此这篇关于java中HashMap的七种遍历方式小结的文章就介绍到这了,更多相关java HashMap遍历内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!