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

相关文章
|
2天前
|
存储 安全 Java
Java集合详解:Set, Map, Vector, List的对比与联系
Java集合框架核心包括List、Set、Map和Vector。List允许重复元素,如ArrayList(适合读取)和LinkedList(适合插入删除)。Set不允许重复,有HashSet(无序)和TreeSet(排序)。Map存储键值对,HashMap(无序)和TreeMap(排序)。Vector是线程安全的ArrayList替代品,但在多线程环境下使用。选择集合类型应根据应用场景,如有序、无序、键值对需求及线程安全考虑。
|
3天前
|
存储 缓存 Java
Java交换map的key和value值
在Java中,直接交换`Map`的key和value是不允许的,因为key是唯一的且不可变。不过,可以通过创建新`Map`实现交换:将原`Map`的value作为新key,key作为新value。注意,如果原`Map`有重复value或null,需额外处理。以下是一个代码示例,展示了如何在value唯一且非null的情况下交换`Map`的key和value。对于重复value或null值的情况,可以使用`List`存储多个key或忽略null值。在实际应用中,`Map`常用于缓存、配置管理、数据库结果映射等多种场景。
17 1
|
3天前
|
存储 缓存 Java
Java遍历Map集合的方法
在Java中,遍历Map集合主要有四种方式:1) 使用`keySet()`遍历keys并用`get()`获取values;2) 使用`entrySet()`直接遍历键值对,效率较高;3) 通过`Iterator`遍历,适合在遍历中删除元素;4) Java 8及以上版本可用`forEach`和Lambda表达式,简洁易读。`entrySet()`通常性能最佳,而遍历方式的选择应考虑代码可读性和数据量。
20 0
|
4天前
|
Java API 容器
Java 8 的流库:Filter、Map、FlatMap 及 Optional 的概念与用法
【6月更文挑战第9天】Java 8 引入了许多强大的新特性,其中流库(Stream API)和 Optional 类极大地简化了集合操作和空值处理。本文将深入探讨 filter、map、flatMap 以及 Optional 的概念和用法,并提供示例代码来展示其实际应用。
15 4
|
5天前
|
存储 安全 Java
Java 集合(List、Set、Map 等)相关问答归纳再整理
HashMap 中使用键对象来计算 hashcode 值 HashSet 使用成员对象来计算 hashcode 值,对于两个对象来说hashcode 可能相同,所以 equals() 方法用来判断对象的相等性,如果两个对象不同的话,那么返回 false。 HashMap 比较快,因为是使用唯一的键来获取对象,HashSet 较 HashMap 来说比较慢。 4.1.3 HashMap 与 TreeMap
6 2
|
8天前
|
Java
Java list中的对象转为list,list中的对象转为map
Java list中的对象转为list,list中的对象转为map
|
13天前
|
存储 安全 Java
Java的Map接口及其实现类的技术性文章
Java的Map接口及其实现类的技术性文章
8 0
|
14天前
|
存储 安全 Java
Java list set map等接口及其实现类
Java list set map等接口及其实现类
|
16天前
|
存储 Java Serverless
Java集合利器 Map & Set
Java集合利器 Map & Set
|
17天前
|
Java
<Java SE> 数组详解大全(附带练习题).一维数组、二维数组、数组拷贝、数组遍历...
<Java SE> 数组详解大全(附带练习题).一维数组、二维数组、数组拷贝、数组遍历
19 0