Java中HashMap集合的6种遍历方式详解

 更新时间:2023年12月11日 09:42:27   作者:warybee  
这篇文章主要介绍了Java中HashMap集合的6种遍历方式详解,HashMap 基于哈希表的 Map 接口实现,是以 key-value 存储形式存在,即主要用来存放键值对,HashMap 的实现不是同步的,这意味着它不是线程安全的,我们来看一下其遍历方式,需要的朋友可以参考下

HashMap的6种遍历方式

1 Foreach entrySet方式

     @Test
     public void test1(){
         HashMap<Integer,String> languages=new HashMap<>();
         languages.put(1,"java");
         languages.put(2,"C#");
         languages.put(3,"javascript");
         languages.put(4,"C");
         languages.put(5,"C++");
         for (Map.Entry<Integer,String> entry:languages.entrySet()) {
             log.info("key:"+entry.getKey());
             log.info("value:"+entry.getValue());
         }
     }

2 Foreach keySet方式

@Test
public void test2(){
    HashMap<Integer,String> languages=new HashMap<>();
    languages.put(1,"java");
    languages.put(2,"C#");
    languages.put(3,"javascript");
    languages.put(4,"C");
    languages.put(5,"C++");
    for (Integer key:languages.keySet()) {
        log.info("key:"+key);
        log.info("value:"+languages.get(key));
    }
}

3 Iterator EntrySet方式

@Test
public void test3(){
    HashMap<Integer,String> languages=new HashMap<>();
    languages.put(1,"java");
    languages.put(2,"C#");
    languages.put(3,"javascript");
    languages.put(4,"C");
    languages.put(5,"C++");
    Iterator<Map.Entry<Integer, String>> iterator = languages.entrySet().iterator();
    while (iterator.hasNext()){
        Map.Entry<Integer, String> next = iterator.next();
        log.info("key:"+next.getKey());
        log.info("value:"+next.getValue());
    }
}

4 Iterator KeySet方式

@Test
public void test4(){
    HashMap<Integer,String> languages=new HashMap<>();
    languages.put(1,"java");
    languages.put(2,"C#");
    languages.put(3,"javascript");
    languages.put(4,"C");
    languages.put(5,"C++");
    Iterator<Integer> iterator = languages.keySet().iterator();
    while (iterator.hasNext()){
        log.info("key:"+iterator.next());
        log.info("value:"+languages.get(iterator.next()));
    }
}

5 Lambda表达式

   @Test
    public void test5(){
        HashMap<Integer,String> languages=new HashMap<>();
        languages.put(1,"java");
        languages.put(2,"C#");
        languages.put(3,"javascript");
        languages.put(4,"C");
        languages.put(5,"C++");
        languages.forEach((k,v)->{
            log.info("key:"+k);
            log.info("value:"+v);
        });
    }

6 Stream API方式

Stream API 单线程

    @Test
    public void test6(){
        HashMap<Integer,String> languages=new HashMap<>();
        languages.put(1,"java");
        languages.put(2,"C#");
        languages.put(3,"javascript");
        languages.put(4,"C");
        languages.put(5,"C++");
        languages.entrySet().stream().forEach(entry->{
            log.info("key:"+entry.getKey());
            log.info("value:"+entry.getValue());
        });
    }

Stream API 多线程

@Test
    public void test7(){
        HashMap<Integer,String> languages=new HashMap<>();
        languages.put(1,"java");
        languages.put(2,"C#");
        languages.put(3,"javascript");
        languages.put(4,"C");
        languages.put(5,"C++");
        languages.entrySet().parallelStream().forEach(entry->{
            log.info("key:"+entry.getKey());
            log.info("value:"+entry.getValue());
        });
    }

到此这篇关于Java中HashMap集合的6种遍历方式详解的文章就介绍到这了,更多相关HashMap的6种遍历方式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot实现邮件发送功能的姿势分享

    SpringBoot实现邮件发送功能的姿势分享

    我们在日常开发中,经常会碰到email邮件发送的场景,如发送验证码,向客户发送邮件等等,这篇文章主要给大家介绍了关于SpringBoot实现邮件发送的相关资料,需要的朋友可以参考下
    2021-08-08
  • springCloud服务注册Eureka实现过程图解

    springCloud服务注册Eureka实现过程图解

    这篇文章主要介绍了springCloud服务注册Eureka实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • JDBC链接数据库的几个步骤

    JDBC链接数据库的几个步骤

    这篇文章主要介绍了JDBC链接数据库的几个步骤,通过将数据库的连接放在一个工具类里面,达到重用的效果,需要的朋友可以参考下
    2015-07-07
  • 用C++实现求N!中末尾0的个数的方法详解

    用C++实现求N!中末尾0的个数的方法详解

    这篇文章主要介绍了用C++实现求N!中末尾0的个数的方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java NIO工作原理的全面分析

    Java NIO工作原理的全面分析

    JDK 1.4 中引入的新输入输出 (NIO) 库在标准 Java 代码中提供了高速的、面向块的 I/O。本实用教程从高级概念到底层的编程细节,非常详细地介绍了 NIO 库。您将学到诸如缓冲区和通道这样的关键 I/O 元素的知识,并考察更新后的库中的标准 I/O 是如何工作的。您还将了解只能通过 NIO 来完成的工作,如异步 I/O 和直接缓冲区。
    2013-02-02
  • java poi解析word的方法

    java poi解析word的方法

    这篇文章主要为大家详细介绍了java poi解析word的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Java中的HttpServletRequest接口详细解读

    Java中的HttpServletRequest接口详细解读

    这篇文章主要介绍了Java中的HttpServletRequest接口详细解读,是一个接口,全限定名称为Jakarta.Serclet.http.HttpServletRequest
    HttpServletRequest接口是Servlet规范的一员,需要的朋友可以参考下
    2023-11-11
  • Java线程安全问题的解决方案

    Java线程安全问题的解决方案

    这篇文章主要介绍了Java线程安全问题的解决方案,文章关于安全的问题的解决方案本文主要分享了三种方法,使用线程安全类,比如 AtomicInteger,使用线程本地变量 ThreadLocal,加锁排队执行,三种方法的使用场景及区别需要的小伙伴可以参考一下
    2022-05-05
  • Java中的字符编码问题处理心得总结

    Java中的字符编码问题处理心得总结

    Java中的String类默认是Unicode编码,大家平常所说的UTF-8就是使用最广的一种unicode的实现方式,以下我们还是来看一下Java中的字符编码问题处理心得总结:
    2016-06-06
  • java报错非法的前向引用问题

    java报错非法的前向引用问题

    这篇文章主要介绍了java报错非法的前向引用问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论