java中HashMap的七种遍历方式小结

 更新时间:2024年01月12日 11:09:44   作者: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遍历内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • java中获取json的所有key方法

    java中获取json的所有key方法

    下面小编就为大家分享一篇java中获取json的所有key方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Java网络编程之TCP程序设计

    Java网络编程之TCP程序设计

    这篇文章主要为大家详细介绍了Java网络编程之TCP程序设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • SpringBoot接口获取参数的常用注解详解

    SpringBoot接口获取参数的常用注解详解

    SpringBoot 接口获取参数的注解非常丰富,这篇文章主要为大家详细介绍了一些常用参数注解的使用,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2026-01-01
  • Java用户登录验证代码

    Java用户登录验证代码

    本文给大家使用java代码实现用户登录验证功能,当用户输入三次错误后,用户不可以再次登录的。具体实现代码,大家可以参考下本教程
    2016-08-08
  • Java并发应用之任务执行分析

    Java并发应用之任务执行分析

    这篇文章主要为大家详细介绍了JavaJava并发应用编程中任务执行分析的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-07-07
  • IDEA接入Deepseek的图文教程

    IDEA接入Deepseek的图文教程

    在本篇文章中,我们将详细介绍如何在 JetBrains IDEA 中使用 Continue 插件接入 DeepSeek,让你的 AI 编程助手更智能,提高开发效率,感兴趣的小伙伴跟着小编一起来看看吧
    2025-03-03
  • Mybatis-plus配置多数据源,连接多数据库方式

    Mybatis-plus配置多数据源,连接多数据库方式

    这篇文章主要介绍了Mybatis-plus配置多数据源,连接多数据库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Dubbo+zookeeper 最简单的分布式搭建方案

    Dubbo+zookeeper 最简单的分布式搭建方案

    这篇文章主要介绍了Dubbo+zookeeper 最简单的分布式搭建,本例采用 dubbo+zookeeper 搭建分布式系统,环境 jdk1.8,需要的朋友可以参考下
    2022-04-04
  • Spring @Scheduled定时器注解使用方式

    Spring @Scheduled定时器注解使用方式

    这篇文章主要介绍了Spring @Scheduled定时器注解使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Java服务器处理图片上传的方法

    Java服务器处理图片上传的方法

    这篇文章主要为大家详细介绍了Java服务器处理图片上传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06

最新评论