Map的五种遍历方式

在Java中,Map是一种键值对的集合,用于存储键值对的数据结构。它提供了一种通过键来查找和访问值的方式,每个键都是唯一的,而值可以重复。

特点和常见实现类

  1. 键值对的存储:Map以键值对(key-value pair)的形式存储数据,每个键都映射到一个值。通过键可以快速访问对应的值,类似于字典或者关联数组的概念。

  2. 键的唯一性:在同一个Map中,每个键必须是唯一的。如果添加具有相同键的新条目,则会替换旧的条目。

五种遍历方式

1.使用EntrySet遍历

java 复制代码
public class MapTraversalExample {

    public static void main(String[] args) {
        // 创建一个HashMap并添加一些元素
        Map<String, Integer> map = new HashMap<>();
        map.put("Alice", 25);
        map.put("Bob", 30);
        map.put("Charlie", 35);

        // 1. 使用EntrySet遍历
        System.out.println("1. 使用EntrySet遍历:");
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }

2. 使用KeySet遍历

java 复制代码
         // 2. 使用KeySet遍历
        System.out.println("2. 使用KeySet遍历:");
        for (String key : map.keySet()) {
            System.out.println("Key: " + key + ", Value: " + map.get(key));
        }

3. 使用Lambda表达式遍历(Java 8及以上)

java 复制代码
 // 3. 使用Lambda表达式遍历(Java 8及以上)
        System.out.println("3. 使用Lambda表达式遍历:");
        map.forEach((key, value) -> System.out.println("Key: " + key + ", Value: " + value));

4. 使用Iterator遍历

java 复制代码
        // 4. 使用Iterator遍历
        System.out.println("4. 使用Iterator遍历:");
        Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, Integer> entry = iterator.next();
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }
  1. 使用Stream API遍历(Java 8及以上)
java 复制代码
        // 5. 使用Stream API遍历(Java 8及以上)
        System.out.println("5. 使用Stream API遍历:");
        map.entrySet().stream()
                .forEach(entry -> System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()));
相关推荐
名字还没想好☜1 小时前
Go 的 time.Ticker 陷阱:定时任务里被忽略的内存泄漏与正确关闭
java·数据库·golang·go·定时器
皓月斯语1 小时前
【C++基础】三目运算符
开发语言·数据结构·c++
音符犹如代码2 小时前
后端视角看 EventBus:发布订阅总线的原理、场景与用法
java·spring boot·guava
前端炒粉2 小时前
手撕小汇总
java·前端·javascript
初願致夕霞2 小时前
C++懒汉单例设计详解
服务器·开发语言·c++
脱胎换骨-军哥2 小时前
C++分布式系统设计:从通信引擎到分布式共识
开发语言·c++·分布式
唐青枫2 小时前
Java Kafka 实战指南:从 Topic、分区到 Spring Boot 可靠消息处理
java
脱胎换骨-军哥3 小时前
C++零成本抽象理论深度拆解:现代C++如何在不牺牲性能的前提下提供高级语法封装
java·开发语言·c++
lbb 小魔仙3 小时前
VS Code Python 高级调试技巧:从入门到精通
开发语言·python
我是唐青枫3 小时前
Java Netty 实战指南:从 NIO 线程模型到 TCP 编解码和心跳机制
java·tcp/ip·nio