广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >HashMap的7种遍历方式
  • 745
分享到

HashMap的7种遍历方式

javaredis数据库 2023-09-12 16:09:51 745人浏览 独家记忆
摘要

目录 1.JDK 8 之前的遍历1.1 EntrySet 遍历1.2 KeySet 遍历1.3 EntrySet 迭代器遍历1.4 KeySet 迭代器遍历 2.JDK 8 之后的遍历2.

目录

1.jdk 8 之前的遍历

1.1 EntrySet 遍历

    public static void main(String[] args) {        // 创建并赋值 HashMap        HashMap<String, String> map = new HashMap() {{            put("Java", " Java Value");            put("Mysql", " mysql Value");            put("Redis", " Redis Value");        }};        // 循环遍历        for (Map.Entry<String, String> entry : map.entrySet()) {            System.out.println(entry.geTKEy() + ":" + entry.getValue());        }    }

在这里插入图片描述

1.2 KeySet 遍历

KeySet 的遍历方式是循环 Key 内容,再通过 map.get(key) 获取 Value 的值,具体实现如下:

    public static void main(String[] args) {        // 创建并赋值 hashmap        HashMap<String, String> map = new HashMap() {{            put("Java", " Java Value");            put("Mysql", " MySQL Value");            put("Redis", " Redis Value");        }};        // 循环遍历        for (String key : map.keySet()) {            System.out.println(key + ":" + map.get(key));        }    }

在这里插入图片描述
KeySet 性能问题
通过以上代码,我们可以看出使用 KeySet 遍历,其性能是不如 EntrySet 的,因为 KeySet 其实循环了两遍集合,第一遍循环是循环 Key,而获取 Value 有需要使用 map.get(key),相当于有循环了一遍集合,所以 KeySet 循环不能建议使用,因为循环了两次,效率比较低。

1.3 EntrySet 迭代器遍历

EntrySet 和 KeySet 除了以上直接循环外,我们还可以使用它们的迭代器进行循环,如 EntrySet 的迭代器实现代码如下:

    public static void main(String[] args) {        // 创建并赋值 hashmap        HashMap<String, String> map = new HashMap() {{            put("Java", " Java Value");            put("MySQL", " MySQL Value");            put("Redis", " Redis Value");        }};        // 循环遍历        Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();        while (iterator.hasNext()) {            Map.Entry<String, String> entry = iterator.next();            System.out.println(entry.getKey() + ":" + entry.getValue());        }    }

在这里插入图片描述

1.4 KeySet 迭代器遍历

    public static void main(String[] args) {        // 创建并赋值 hashmap        HashMap<String, String> map = new HashMap() {{            put("Java", " Java Value");            put("MySQL", " MySQL Value");            put("Redis", " Redis Value");        }};        // 循环遍历        Iterator<String> iterator = map.keySet().iterator();        while (iterator.hasNext()) {            String key = iterator.next();            System.out.println(key + ":" + map.get(key));        }    }

在这里插入图片描述

2.JDK 8 之后的遍历

在 JDK 8 之后 HashMap 的遍历就变得方便很多了,JDK 8 中包含了以下 3 种遍历方法:
使用 Lambda 遍历
使用 Stream 单线程遍历
使用 Stream 多线程遍历

2.1 Lambda 遍历

    public static void main(String[] args) {        // 创建并赋值 hashmap        HashMap<String, String> map = new HashMap() {{            put("Java", " Java Value");            put("MySQL", " MySQL Value");            put("Redis", " Redis Value");        }};        // 循环遍历        map.forEach((key, value) -> {            System.out.println(key + ":" + value);        });    }

在这里插入图片描述

2.2 Stream 单线程遍历

Stream 遍历是先得到 map 集合的 EntrySet,然后再执行 forEach 循环,实现代码如下:

    public static void main(String[] args) {        // 创建并赋值 hashmap        HashMap<String, String> map = new HashMap() {{            put("Java", " Java Value");            put("MySQL", " MySQL Value");            put("Redis", " Redis Value");        }};        // 循环遍历        map.entrySet().stream().forEach((entry) -> {            System.out.println(entry.getKey() + ":" + entry.getValue());        });    }

在这里插入图片描述

2.3 Stream 多线程遍历

Stream 多线程的遍历方式和上一种遍历方式类似,只是多执行了一个 parallel 并发执行的方法,此方法会根据当前的硬件配置生成对应的线程数,然后再进行遍历操作,实现代码如下:

    public static void main(String[] args) {        // 创建并赋值 hashmap        HashMap<String, String> map = new HashMap() {{            put("Java", " Java Value");            put("MySQL", " MySQL Value");            put("Redis", " Redis Value");        }};        // 循环遍历        map.entrySet().stream().parallel().forEach((entry) -> {            System.out.println(entry.getKey() + ":" + entry.getValue());        });    }

3.总结

7 种 HashMap 的遍历方式,其中 JDK 8 之前主要使用 EntrySet 和 KeySet 的遍历方式,而 KeySet 的遍历方式性能比较低,一般不推荐使用。然而在 JDK 8 之后遍历方式就有了新的选择,可以使用比较简洁的 Lambda 遍历,也可以使用性能比较高的 Stream 多线程遍历。

来源地址:https://blog.csdn.net/qq_46548855/article/details/129291439

--结束END--

本文标题: HashMap的7种遍历方式

本文链接: https://www.lsjlt.com/news/404742.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • HashMap的7种遍历方式
    目录 1.JDK 8 之前的遍历1.1 EntrySet 遍历1.2 KeySet 遍历1.3 EntrySet 迭代器遍历1.4 KeySet 迭代器遍历 2.JDK 8 之后的遍历2....
    99+
    2023-09-12
    java redis 数据库
  • 浅谈HashMap中7种遍历方式的性能分析
    目录一、前言二、HashMap遍历2.1、迭代器EntrySet2.2、迭代器 KeySet2.3、ForEachEntrySet2.4、ForEach KeySet2.5、Lamb...
    99+
    2022-11-12
  • java中HashMap的7种遍历方式与性能分析
    目录1、遍历方式1.1 迭代器 EntrySet1.2 迭代器 KeySet1.3 ForEach EntrySet1.4 ForEach KeySet1.5 Lambda 表达式1...
    99+
    2022-11-12
  • java中HashMap的7种遍历方式与性能的示例分析
    本篇文章给大家分享的是有关java中HashMap的7种遍历方式与性能的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、遍历方式1.1 迭代器 EntrySet@Te...
    99+
    2023-06-25
  • HashMap中有哪些遍历方式
    这篇文章主要为大家展示了“HashMap中有哪些遍历方式”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HashMap中有哪些遍历方式”这篇文章吧。一、前言随着 JDK 1.8 Streams A...
    99+
    2023-06-20
  • Java8 HashMap遍历方式性能探讨
    原因: keySet其实是遍历了2次,一次是转为Iterator对象,另一次是从hashMap中取出key所对应的value。而entrySet只是遍历了一次就把key和value都...
    99+
    2022-11-12
  • Java ​​​​​​​HashMap遍历方法汇总
    目录1.JDK 8 之前的遍历1.1 EntrySet 遍历1.2 KeySet 遍历2.KeySet 性能问题2.1 EntrySet 迭代器遍历2.2 KeySet 迭代器遍历2...
    99+
    2022-11-13
  • HashMap集合遍历的四种方式 现金盘源码出售搭建
    现金盘源码出售搭建【hubawl.com】狐霸源码论坛对于Map来说,遍历的方式都是一样的,大概都是有四种形式直接遍历返回keySet()返回Values()返回entrySet()对于第四种方式可能会除了返回的可以直接打印外,还可以通过返...
    99+
    2023-06-03
  • pythondf遍历的N种方式(小结)
    目录for…in 迭代循环iterrows()生成器方式apply()循环方式矢量化遍历方式总结for…in 迭代循环 首先介绍Python中最常用的fo...
    99+
    2022-11-11
  • 关于hashmap的遍历问题
    听我们的支持说遍历hashmap使用entryset快些,因大部分都是用keyset遍历的,也没有去想那么多。今天研究了一下,果然差了很多。见示例,只是简单的hashmap信息。不多说了,大家把这个类在本地运行下,很容易看到结果。impor...
    99+
    2023-06-03
  • java集合ArrayList的三种遍历方式
    ArrayListArrayList 使用连续的内存单元存储数据元素,是一个其容量能够动态增长的动态数组。当添加或删除数据元素时(最后位置除外),ArrayList 需要移动其被添加(或删除)元素后面的所有元素。所以插入和删除元素时较慢,查...
    99+
    2015-12-28
    java 集合 ArrayList 遍历
  • Java遍历Map的5种方式实例
    目录一、遍历Map的五种方式二、准备条件三、keySet和values方式遍历四、keySet和get(key)方式遍历map五、entrySet方式遍历map六、Iterator方...
    99+
    2023-02-09
    java遍历map map遍历的几种方式 java如何遍历map
  • Java遍历Map四种方式讲解
    Java中遍历Map的四种方式 在java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等...
    99+
    2022-11-12
  • Python字典 dict几种遍历方式
    目录1.使用 for key in dict遍历字典2.使用for key in dict.keys () 遍历字典的键3.使用 for values in dict.values ...
    99+
    2022-11-12
  • list的4种遍历方式(实例讲解)
    废话不多说,直接上代码:import java.util.ArrayList;import java.util.Iterator;import java.util.List;import com.hbut.domain.Person;pub...
    99+
    2023-05-31
    list 遍历方式 lis
  • PHP遍历数组的6种方式总结
    目录1、foreach2、array_map3、array_walk4、for5、each6、reset总结在PHP的日常操作中,数组是最常出现的结构,而我们几乎每天都在处理数组相关的内容。那么问题来了,你一般怎么遍历并处理数组。 1、fo...
    99+
    2014-08-30
    php遍历数组 php遍历数组使用的是 php数组遍历的三种方法
  • java中遍历ArrayList集合的四种方式
    ArrayList遍历:取出ArrayList集合中的数据方式一:for循环方式二:增强for循环:foreach方式三:Iterator:迭代器方式四:ListIterator:双向迭代器免费视频教程推荐:java在线教程示例如下: pu...
    99+
    2015-11-15
    java教程 java 遍历 ArrayList 方式
  • Java中Map的九种遍历方式总结
    目录通过 entrySet 来遍历1、通过 for 和 map.entrySet() 来遍历2、通过 for,&...
    99+
    2022-11-16
    Java Map遍历方式 Java Map遍历 Java Map
  • 详解Thymeleaf的三种循环遍历方式
    目录循环遍历list集合1.实体类2.控制类3.each.html循环遍历map集合1.控制类2.each.html循环遍历数组循环遍历list集合 1.实体类 使用lombok插件...
    99+
    2022-11-13
  • Java中Map集合的三种遍历方式
    文章目录 Map集合的遍历方式Map集合的遍历方式一: 键找值Map集合的遍历方式二: 键值对Map集合的遍历方式三: Lambda Map集合的遍历方式 Map集合的遍历方式有3种: 方式一:键找值的方式遍历:先...
    99+
    2023-08-16
    java 开发语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作