目录

  • 1.使用迭代器 (Iterator) EntrySet 的方式进行遍历
  • 2.使用迭代器 (Iterator) KeySet 的方式进行遍历
  • 3.使用 foreach EntrySet 的方式进行遍历
  • 4.使用 foreach KeySet 的方式进行遍历
  • 5.使用 Lambda 表达式的方式进行遍历
  • 6.使用 Streams API 单线程的方式进行遍历
  • 7.使用 Streams API 多线程的方式进行遍历

参考文章:
HashMap 的 7 种遍历方式与性能分析!「修正篇」

HashMap 遍历从大的方向来说,可分为以下 4 类:

  • 迭代器 (Iterator) 方式遍历;
  • foreach 方式遍历;
  • Lambda 表达式遍历 (JDK 1.8+);
  • Streams API 遍历 (JDK 1.8+)。

但每种类型下又有不同的实现方式,因此具体的遍历方式又可以分为以下 7 种:

  • 使用迭代器(Iterator)EntrySet 的方式进行遍历;
  • 使用迭代器(Iterator)KeySet 的方式进行遍历;
  • 使用 foreach EntrySet 的方式进行遍历;
  • 使用 foreach KeySet 的方式进行遍历;
  • 使用 Lambda 表达式的方式进行遍历;
  • 使用 Streams API 单线程的方式进行遍历;
  • 使用 Streams API 多线程的方式进行遍历。

1.使用迭代器 (Iterator) EntrySet 的方式进行遍历

class HashMapTest {public static void main(String[] args) {Map<Integer, String> hashMap = new HashMap<>();hashMap.put(1, "Java");hashMap.put(2, "C++");hashMap.put(3, "Python");// Iterator entrySetIterator<Map.Entry<Integer, String>> iterator = hashMap.entrySet().iterator();while (iterator.hasNext()) {Map.Entry<Integer, String> entry = iterator.next();System.out.println("(" + entry.getKey() + ", " + entry.getValue() + ")");}}
}

输出结果如下,下面几种遍历方式的结果于下面的一样,因此将不再展示。

(1, Java)
(2, C++)
(3, Python)

2.使用迭代器 (Iterator) KeySet 的方式进行遍历

class HashMapTest {public static void main(String[] args) {Map<Integer, String> hashMap = new HashMap<>();hashMap.put(1, "Java");hashMap.put(2, "C++");hashMap.put(3, "Python");// Iterator keySetIterator<Integer> iterator = hashMap.keySet().iterator();while (iterator.hasNext()) {Integer key = iterator.next();System.out.println("(" + key + ", " + hashMap.get(key) + ")");}}
}

3.使用 foreach EntrySet 的方式进行遍历

class HashMapTest {public static void main(String[] args) {Map<Integer, String> hashMap = new HashMap<>();hashMap.put(1, "Java");hashMap.put(2, "C++");hashMap.put(3, "Python");// foreach entrySetfor (Map.Entry<Integer, String> entry : hashMap.entrySet()) {System.out.println("(" + entry.getKey() + ", " + entry.getValue() + ")");}}
}

4.使用 foreach KeySet 的方式进行遍历

class HashMapTest {public static void main(String[] args) {Map<Integer, String> hashMap = new HashMap<>();hashMap.put(1, "Java");hashMap.put(2, "C++");hashMap.put(3, "Python");// foreach keySetfor (Integer key : hashMap.keySet()) {System.out.println("(" + key + ", " + hashMap.get(key) + ")");}}
}

5.使用 Lambda 表达式的方式进行遍历

class HashMapTest {public static void main(String[] args) {Map<Integer, String> hashMap = new HashMap<>();hashMap.put(1, "Java");hashMap.put(2, "C++");hashMap.put(3, "Python");// LambdahashMap.forEach((key, value) -> {System.out.println("(" + key + ", " + value + ")");});}
}

6.使用 Streams API 单线程的方式进行遍历

class HashMapTest {public static void main(String[] args) {Map<Integer, String> hashMap = new HashMap<>();hashMap.put(1, "Java");hashMap.put(2, "C++");hashMap.put(3, "Python");// Streams API 单线程hashMap.entrySet().stream().forEach((entry) -> {System.out.println("(" + entry.getKey() + ", " + entry.getValue() + ")");});}
}

7.使用 Streams API 多线程的方式进行遍历

class HashMapTest {public static void main(String[] args) {Map<Integer, String> hashMap = new HashMap<>();hashMap.put(1, "Java");hashMap.put(2, "C++");hashMap.put(3, "Python");// Streams API 多线程hashMap.entrySet().parallelStream().forEach((entry) -> {System.out.println("(" + entry.getKey() + ", " + entry.getValue() + ")");});}
}

Java 基础——HashMap 遍历方式相关推荐

  1. Java之hashMap遍历方式

    在java开发中,hashMap是非常重要的容器类,存储的是键值对(key,value). HashMap继承AbstractMap,实现了Map.Cloneable.Serializable接口,非 ...

  2. Java中HashMap遍历的两种方式

    第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Ma ...

  3. Java HashMap 遍历方式性能探讨

    转载自 Java HashMap 遍历方式性能探讨 关于HashMap的实现这里就不展开了,具体可以参考JDK7与JDK8中HashMap的实现 JDK8之前,可以使用keySet或者entrySet ...

  4. Java基础-时间复杂度计算方式

    Java基础-时间复杂度计算方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   时间复杂度通常是衡量算法的优劣的,衡量算法的时间严格来讲是很难衡量的,由于不同的机器性能不用环境 ...

  5. Java基础-hashMap原理剖析

    Java基础-hashMap原理剖析 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.什么是哈希(Hash) 答:Hash就是散列,即把对象打散.举个例子,有100000条数 ...

  6. java中hashmap遍历

    java中hashmap遍历有两种方法,第一种就是将所有的key放到set中,然后通过遍历set通过key来获取value,可以选择使用迭代器遍历也可以使用增强for来遍历,第二种可以使用entrys ...

  7. Java基础 HashMap实现原理及方法

    1.什么是HashMap? HashMap通常提起他,我们想到的就是键值对方式存储(key-value型式),可以接收null键值和null值.基于Map接口的非同步实现(也就是线程不安全),并不保证 ...

  8. java中hashmap遍历的几种方法

    Map集合的遍历方式一:键找值 先获取Map集合的全部键的Set集合. 遍历键的Set集合,然后通过键提取对应值. public class HashMap {public static void m ...

  9. Java中集合遍历方式(List、Set、Queue、Deque、Stack、Map)

    什么是集合?通俗的讲,集合就是存储一组数据的容器,那么,相比较于同样是存储数据的数组,集合的优势就体现在集合的长度是可变的,而数组的长度是固定的.在我们常见的集合中,主要有两大类: Collectio ...

最新文章

  1. pandas使用nsmallest函数返回特定数据列中前N个最小值(搜寻最小的n个元素)、pandas使用nsmallest函数返回特定数据列中前N个最小值所对应的数据行
  2. 使用 Xmlrpc 来控制cobbler api
  3. python 释放变量所指向的内存_通俗易懂的Python垃圾回收机制及内存管理
  4. java qq音乐接口 api,QQ音乐解析API接口更新:支持HQ,ape,flac无损音质,缓存功能
  5. cocos2d-x CCScrollView和CCTableView的使用(转载)
  6. android下拉刷新和上拉加载的一个简单库
  7. java中Logger.getLogger(Test.class)
  8. SQL注入漏洞解决方法
  9. 不知道新三字经是啥?男默女泪的扫盲科普帖来了
  10. SDNU 1330.Max Sum(最大子序列和)
  11. [转]Xcode的重构功能
  12. 修改Sql server中列的属性脚本
  13. 2 数据源配置_论多数据源(读写分离)的实现方案
  14. 分布式系列九: kafka
  15. python画50个图-Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢?
  16. 马杰花总刘韧对话:机器人服务是元宇宙虚拟与现实的链接
  17. 采用java编写一个软件,100以内的口算题【软件构造大作业】
  18. 武汉理工大学计算机学院转专业细则,计算机学院武汉理工大学2009年各学院转专业工作实施细则.doc...
  19. 程序员怎么从中国直接去美国工作?
  20. IT男人:四十岁是一枝花吗?

热门文章

  1. CSS3选择器--结构性伪类选择器
  2. Python中一些与word模板文件操作相关的库
  3. C语言指针 谭浩强版总结
  4. uint8_t / uint16_t / uint32_t /uint64_t 是什么数据类型 - 大总结,看完全明白了
  5. PCPNET与POINTNET的比较
  6. OpenVPN 技术支持
  7. 高斯过程 (Gaussian Process)
  8. 【show me the code】Python练习题语法笔记 1
  9. python namedtuple用法_Python namedtuple
  10. java读取含有合并行的excel