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遍历内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • JVM详解之汇编角度理解本地变量的生命周期

    JVM详解之汇编角度理解本地变量的生命周期

    这篇文章主要介绍了JVM详解之汇编角度理解本地变量的生命周期,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • SpringMVC中处理Ajax请求的示例

    SpringMVC中处理Ajax请求的示例

    本篇文章给大家介绍SpringMVC中处理Ajax请求的示例,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-11-11
  • java中的静态代码块、构造代码块、构造方法详解

    java中的静态代码块、构造代码块、构造方法详解

    下面小编就为大家带来一篇java中的静态代码块、构造代码块、构造方法详解。小编觉得挺好的,现在分享给大家。给大家一个参考。一起跟随小编过来看看吧
    2016-03-03
  • Java多线程编程小实例模拟停车场系统

    Java多线程编程小实例模拟停车场系统

    这是一个关于Java多线程编程的例子,用多线程的思想模拟停车场管理系统,这里分享给大家,供需要的朋友参考。
    2017-10-10
  • jackson 实体转json 为NULL或者为空不参加序列化(实例讲解)

    jackson 实体转json 为NULL或者为空不参加序列化(实例讲解)

    下面小编就为大家带来一篇jackson 实体转json 为NULL或者为空不参加序列化(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 详解备忘录模式及其在Java设计模式编程中的实现

    详解备忘录模式及其在Java设计模式编程中的实现

    这篇文章主要介绍了详解备忘录模式及其在Java设计模式编程中的实现,备忘录模式数据的存储过程中应当注意浅拷贝和深拷贝的问题,需要的朋友可以参考下
    2016-04-04
  • java中springMVC获取请求参数的方法

    java中springMVC获取请求参数的方法

    这篇文章主要介绍了java中springMVC获取请求参数的方法,springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合,需要的朋友可以参考下
    2023-05-05
  • JDK源码之Vector与HashSet解析

    JDK源码之Vector与HashSet解析

    HashSet、HashMap、ArrayList、LinkedList、Vector这几个在Java编程中经常用到,他们之间有很多联系,有很多相通的地方,我们这次先了解一下Vector与HashSet
    2021-06-06
  • Java 中EasyExcel的使用方式

    Java 中EasyExcel的使用方式

    这篇文章主要介绍了Java 中EasyExcel的使用方式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • springboot下添加日志模块和设置日志文件输出的方法

    springboot下添加日志模块和设置日志文件输出的方法

    日志的使用将通过SLF4J来使用,SLF4J是一个为Java应用提供简单日志记录的接口,在Spring框架中,SLF4J常常用于处理框架本身以及应用程序的日志记录,本文给大家介绍springboot下添加日志模块和设置日志文件输出的相关知识,感兴趣的朋友一起看看吧
    2023-12-12

最新评论