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

相关文章

  • Mybatis学习总结之mybatis使用建议

    Mybatis学习总结之mybatis使用建议

    这篇文章主要介绍了Mybatis学习总结之mybatis使用建议的相关资料,非常具有参考借鉴价值,需要的朋友可以参考下
    2016-05-05
  • springboot执行延时任务之DelayQueue的使用详解

    springboot执行延时任务之DelayQueue的使用详解

    DelayQueue是一个无界阻塞队列,只有在延迟期满时,才能从中提取元素。这篇文章主要介绍了springboot执行延时任务-DelayQueue的使用,需要的朋友可以参考下
    2019-12-12
  • JVM系列之:再谈java中的safepoint说明

    JVM系列之:再谈java中的safepoint说明

    这篇文章主要介绍了JVM系列之:再谈java中的safepoint说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • spring boot整合CAS Client实现单点登陆验证的示例

    spring boot整合CAS Client实现单点登陆验证的示例

    本篇文章主要介绍了spring boot整合CAS Client实现单点登陆验证的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • SpringCloud项目的log4j2漏洞解决方案详解流程

    SpringCloud项目的log4j2漏洞解决方案详解流程

    很多小伙伴因为Log4j2的惊爆0Day漏洞一时束手无策,这里提供最终解决方案可以进行一个版本号的升级,感兴趣的朋友来看看吧
    2022-04-04
  • Eclipse在线安装hibernate插件

    Eclipse在线安装hibernate插件

    这篇文章主要介绍了Eclipse在线安装hibernate插件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • springcloud检索中间件 ElasticSearch 分布式场景的使用

    springcloud检索中间件 ElasticSearch 分布式场景的使用

    单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题,本文重点给大家介绍springcloud检索中间件 ElasticSearch 分布式场景的运用,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • SpringBoot程序预装载数据的实现方法及实践

    SpringBoot程序预装载数据的实现方法及实践

    在项目实际的开发过程中,有时候会遇到需要在应用程序启动完毕对外提供服务之前预先将部分数据装载到缓存的需求。本文就总结了常见的数据预装载方式及其实践,感兴趣的朋友一起看看吧
    2022-04-04
  • SpringBoot配置拦截器的示例

    SpringBoot配置拦截器的示例

    这篇文章主要介绍了SpringBoot配置拦截器的示例,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下
    2020-11-11
  • 深入解析SpringBoot自动配置原理

    深入解析SpringBoot自动配置原理

    这篇文章主要介绍了深入解析SpringBoot自动配置原理,SpringBoot 的一大好处就是:大大简化了 Spring 和其他框架的整合配置,为了简化配置文件使开发者更专注于业务编码,可以使用 SpringBoot 来进行 Web 开发,需要的朋友可以参考下
    2023-11-11

最新评论