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

相关文章
|
26天前
|
存储 安全 Java
从入门到精通:Java Map全攻略,一篇文章就够了!
【10月更文挑战第17天】本文详细介绍了Java编程中Map的使用,涵盖Map的基本概念、创建、访问与修改、遍历方法、常用实现类(如HashMap、TreeMap、LinkedHashMap)及其特点,以及Map在多线程环境下的并发处理和性能优化技巧,适合初学者和进阶者学习。
39 3
|
26天前
|
存储 Java API
深入剖析Java Map:不只是存储数据,更是设计艺术的体现!
【10月更文挑战第17天】在Java编程中,Map是一种重要的数据结构,用于存储键值对,并展现了设计艺术的精髓。本文深入剖析了Map的设计原理和使用技巧,包括基本概念、设计艺术(如哈希表与红黑树的空间时间权衡)、以及使用技巧(如选择合适的实现类、避免空指针异常等),帮助读者更好地理解和应用Map。
80 3
|
26天前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
53 2
|
26天前
|
存储 Java
告别混乱!用Java Map优雅管理你的数据结构
【10月更文挑战第17天】在软件开发中,随着项目复杂度增加,数据结构的组织和管理至关重要。Java中的Map接口提供了一种优雅的解决方案,帮助我们高效、清晰地管理数据。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,有效提升了代码质量和维护性。
80 2
|
26天前
|
存储 Java 开发者
Java Map实战:用HashMap和TreeMap轻松解决复杂数据结构问题!
【10月更文挑战第17天】本文深入探讨了Java中HashMap和TreeMap两种Map类型的特性和应用场景。HashMap基于哈希表实现,支持高效的数据操作且允许键值为null;TreeMap基于红黑树实现,支持自然排序或自定义排序,确保元素有序。文章通过具体示例展示了两者的实战应用,帮助开发者根据实际需求选择合适的数据结构,提高开发效率。
57 2
|
26天前
|
存储 缓存 安全
HashMap VS TreeMap:谁才是Java Map界的王者?
HashMap VS TreeMap:谁才是Java Map界的王者?
65 2
|
26天前
|
存储 Java API
键值对魔法:如何优雅地使用Java Map,让代码更简洁?
键值对魔法:如何优雅地使用Java Map,让代码更简洁?
105 2
|
12天前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
16天前
|
存储 Java API
Java交换map的key和value值
通过本文介绍的几种方法,可以在Java中实现Map键值对的交换。每种方法都有其优缺点,具体选择哪种方法应根据实际需求和场景决定。对于简单的键值对交换,可以使用简单遍历法或Java 8的Stream API;对于需要处理值不唯一的情况,可以使用集合存储或Guava的Multimap。希望本文对您理解和实现Java中的Map键值对交换有所帮助。
21 1
|
22天前
|
Java 程序员 编译器
Java|如何正确地在遍历 List 时删除元素
从源码分析如何正确地在遍历 List 时删除元素。为什么有的写法会导致异常,而另一些不会。
18 3