Java中5种Map遍历

简介: Java中5种Map遍历

🐓map的概念


Map用于保存具有映射关系的数据,因此Map集合里保存着两组值,一组值用于保存Map里的键值对。key和value都可以是任何引用类型的数据。Map的Key值为set,不允许重复,即同一个Map对象的任何两个key通过equals方法比较结果总是返回false。


通常会在后端面试中问到HashMap的底层原理,或者是机试中map的遍历,在公司中也经常会使用到map数据结构和list数据结构。


🐓map的遍历


🚩 0.前置条件

 //创建一个Map
  Map<String, Integer> hashMap = new HashMap<>();
 //将map中存储数据
  hashMap.put("key1",1);
  hashMap.put("key2",2);
  hashMap.put("key3",3);

🚩 1.iterator+entrySet写法

代码

 Iterator<Map.Entry<String, Integer>> iterator = hashMap.entrySet().iterator();
         while (iterator.hasNext()){
             Map.Entry<String, Integer> entry = iterator.next();
             System.out.print(entry.getKey());
             System.out.println(entry.getValue());
      }    

执行时间

c3a06764ceba4abb908208c4a61f0d8d.png


🚩 2.iterator+keyset写法

代码

Iterator<String> iterator1 = hashMap.keySet().iterator();
        while (iterator1.hasNext()){
            String key = iterator1.next();
            System.out.print(key);
            System.out.println(hashMap.get(key));
        }

执行时间

2973a6142b774449bfe03475856aaf5e.png


🚩 3.加强for循环

代码

  for (Map.Entry<String,Integer> entry: hashMap.entrySet()) {
            System.out.print(entry.getKey());
            System.out.println(entry.getValue());
        }

执行时间

9a1e7640cc094827a5dd2283ef802a62.png


🚩 4.lambda表达式遍历

代码

hashMap.forEach((key,value)->{
            System.out.print(key);
            System.out.println(value);
        });

执行时间

ffc2bf8f674f4a72bc39ced59129b3e6.png


🚩 5.使用steam流

代码

 hashMap.entrySet().stream().forEach((Map.Entry<String,Integer> entry)->{
            System.out.print(entry.getKey());
            System.out.println(entry.getValue());
        } );

执行时间

e59bb2d14a94447987483e3ca94df270.png


🚩 遍历效率对比(每个系统性能不同,因机器而异,个人测试):

个人观点:

b95ca701a29343368948a59bc9234854.png

执行效率:iterator+entrySet>iterator+keyset>加强for循环>lambda表达式>steam

相关文章
|
6天前
|
存储 算法 Java
Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。
【6月更文挑战第21天】Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。二叉树遍历通过访问根、左、右子节点实现。DFS采用递归遍历图的节点,而BFS利用队列按层次访问。以下是简化的代码片段:[Java代码略]
16 4
|
2天前
|
存储 消息中间件 算法
Java中的集合框架详解:List、Set、Map的使用场景
Java中的集合框架详解:List、Set、Map的使用场景
|
3天前
|
存储 Java API
探讨Java中交换Map的Key和Value值的技术
探讨Java中交换Map的Key和Value值的技术
7 2
|
3天前
|
Java
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
10 2
|
3天前
|
缓存 Java 测试技术
探讨Java中遍历Map集合的最快方式
探讨Java中遍历Map集合的最快方式
7 1
|
6天前
|
Java
Java二叉树的遍历
Java二叉树的遍历
|
1天前
|
Java API
java中Map遍历详解
java中Map遍历详解
|
2天前
|
Java
二叉树简单遍历、查找、删除(java)
二叉树简单遍历、查找、删除(java)
4 0
|
3天前
|
Java
java中Stream流中的forEach、filter、map、count、limit、skip、concat
java中Stream流中的forEach、filter、map、count、limit、skip、concat
9 0
|
3天前
|
Java
java使用递归遍历文件目录
java使用递归遍历文件目录
6 0