感兴趣的话大家可以关注一下公众号 : 猿人刘先生 , 欢迎大家一起学习 , 一起进步 , 一起来交流吧!
1.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 单线程 / 多线程 的方式进行遍历;
接下来我们看每种方式的具体实现代码
1.1. 迭代器(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);
}
1.2. 迭代器(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);
}
1.3. 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);
}
1.4. 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);
}
1.5. 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));
1.6.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);
});
1.7.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()方法 , 否则就会抛出异常 :文章来源:https://www.toymoban.com/news/detail-408374.html
java.util.ConcurrentModificationException , 这种办法是非安全的 , 我们可以使用Iterator.remove() ,或者是Lambda 中的 removeIf() , 或者是Stream 中的 filter() 过滤或者删除相关数据文章来源地址https://www.toymoban.com/news/detail-408374.html
到了这里,关于java中HashMap的七种遍历方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!