程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • JavaAPI速查

    • Java基础API
    • String类常用API
    • StringBuilder常用API
    • Arrays数组 工具类
    • Collections 工具类
    • Java 集合常用API
    • Collection 接口集合的遍历方式
    • Map 接口集合的遍历方式
      • 1. 通过 entrySet 遍历 Map 的键值对
      • 2. 通过 keySet 遍历 Map 的键,然后通过键获取值
      • 3. 通过 values() 遍历 Map 的所有值
      • 4. 使用 forEach 和 Lambda 表达式遍历 Map
      • 5. 使用 Stream API 遍历 Map
      • 6. Map 接口集合的遍历总结
    • Queue 和 Stack 的常用遍历方式
    • 数组的常用遍历方式
    • 字符串的常用遍历方式
    • 文件或目录的常用遍历方式
    • 比较器的常用使用方式
    • 常用日期和时间API
  • JavaAPI速查
  • JavaAPI速查
scholar
2024-08-24
目录

Map 接口集合的遍历方式

# Map 接口集合的遍历方式

Map 集合是用于存储键值对的常用数据结构,以下是几种常见的遍历 Map 集合的方式。

image-20240824030515610

# 1. 通过 entrySet 遍历 Map 的键值对

使用说明:

  • 适用集合: 适用于所有 Map 实现类,如 HashMap、LinkedHashMap、TreeMap 等。
  • 使用前提: Map 集合需要支持 entrySet() 方法。
  • 注意事项: 这种方式遍历的是 Map.Entry 对象,可以同时获取键和值,是最常用的遍历方式。

代码示例:

import java.util.HashMap;
import java.util.Map;

public class MapEntrySetExample {
    public static void main(String[] args) {
        // 创建一个HashMap集合,存储键值对
        Map<String, Integer> map = new HashMap<>();
        map.put("Java", 1);
        map.put("Python", 2);
        map.put("C++", 3);

        // 使用entrySet遍历Map的键值对
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            // 获取键和值
            String key = entry.getKey();
            Integer value = entry.getValue();

            // 输出键值对
            System.out.println("Key: " + key + ", Value: " + value);
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

参数说明:

  • Map.Entry<String, Integer> entry:代表一个键值对,entry.getKey() 获取键,entry.getValue() 获取值。
  • map.entrySet():返回 Set<Map.Entry<K, V>>,用于遍历 Map 中的每个键值对。

# 2. 通过 keySet 遍历 Map 的键,然后通过键获取值

使用说明:

  • 适用集合: 适用于所有 Map 实现类,如 HashMap、LinkedHashMap、TreeMap 等。
  • 使用前提: Map 集合需要支持 keySet() 方法。
  • 注意事项: 这种方式遍历的是 Map 的键,通过键再获取值,适合需要只关心键的场景。

代码示例:

import java.util.HashMap;
import java.util.Map;

public class MapKeySetExample {
    public static void main(String[] args) {
        // 创建一个HashMap集合,存储键值对
        Map<String, Integer> map = new HashMap<>();
        map.put("Java", 1);
        map.put("Python", 2);
        map.put("C++", 3);

        // 使用keySet遍历Map的键
        for (String key : map.keySet()) {
            // 通过键获取对应的值
            Integer value = map.get(key);

            // 输出键值对
            System.out.println("Key: " + key + ", Value: " + value);
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

参数说明:

  • map.keySet():返回 Set<K>,包含 Map 中的所有键。
  • map.get(key):根据键获取对应的值。

# 3. 通过 values() 遍历 Map 的所有值

使用说明:

  • 适用集合: 适用于所有 Map 实现类,如 HashMap、LinkedHashMap、TreeMap 等。
  • 使用前提: Map 集合需要支持 values() 方法。
  • 注意事项: 这种方式遍历的是 Map 中的所有值,适合只关心值的场景。

代码示例:

import java.util.HashMap;
import java.util.Map;

public class MapValuesExample {
    public static void main(String[] args) {
        // 创建一个HashMap集合,存储键值对
        Map<String, Integer> map = new HashMap<>();
        map.put("Java", 1);
        map.put("Python", 2);
        map.put("C++", 3);

        // 使用values方法遍历Map的所有值
        for (Integer value : map.values()) {
            // 输出值
            System.out.println("Value: " + value);
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

参数说明:

  • map.values():返回 Collection<V>,包含 Map 中的所有值。

# 4. 使用 forEach 和 Lambda 表达式遍历 Map

使用说明:

  • 适用集合: 适用于所有 Map 实现类,如 HashMap、LinkedHashMap、TreeMap 等。
  • 使用前提: Java 8 及以上版本,Map 集合需要支持 forEach() 方法。
  • 注意事项: 这种方式通过 Lambda 表达式进行遍历,代码简洁易读,适合需要同时处理键和值的场景。

代码示例:

import java.util.HashMap;
import java.util.Map;

public class MapForEachLambdaExample {
    public static void main(String[] args) {
        // 创建一个HashMap集合,存储键值对
        Map<String, Integer> map = new HashMap<>();
        map.put("Java", 1);
        map.put("Python", 2);
        map.put("C++", 3);

        // 使用forEach和Lambda表达式遍历Map的键值对
        map.forEach((key, value) -> {
            // 输出键值对
            System.out.println("Key: " + key + ", Value: " + value);
        });
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

参数说明:

  • map.forEach((key, value) -> {}):使用 Lambda 表达式,key 和 value 分别代表键和值。

# 5. 使用 Stream API 遍历 Map

使用说明:

  • 适用集合: 适用于所有 Map 实现类,如 HashMap、LinkedHashMap、TreeMap 等。
  • 使用前提: Java 8 及以上版本,Map 集合需要支持 stream() 方法。
  • 注意事项: Stream 支持更复杂的数据处理操作,如过滤、排序等,适合需要进行复杂处理的场景。

代码示例:

import java.util.HashMap;
import java.util.Map;
import java.util.stream.Stream;

public class MapStreamApiExample {
    public static void main(String[] args) {
        // 创建一个HashMap集合,存储键值对
        Map<String, Integer> map = new HashMap<>();
        map.put("Java", 1);
        map.put("Python", 2);
        map.put("C++", 3);

        // 使用Stream API遍历Map的键值对
        map.entrySet().stream().forEach(entry -> {
            // 获取键和值
            String key = entry.getKey();
            Integer value = entry.getValue();

            // 输出键值对
            System.out.println("Key: " + key + ", Value: " + value);
        });
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

参数说明:

  • map.entrySet().stream():将 Map 的 entrySet 转换为流(Stream)。
  • stream().forEach(entry -> {}):使用 Lambda 表达式对每个键值对进行处理。

# 6. Map 接口集合的遍历总结

  • 通过 entrySet() 遍历键值对是最常用、最全面的遍历方式,适用于大多数场景。
  • 通过 keySet() 和 values() 进行遍历适合只关注键或值的场景。
  • 使用 forEach 和 Stream API 提供了更现代的遍历方式,代码简洁,适合复杂处理操作。
编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
Collection 接口集合的遍历方式
Queue 和 Stack 的常用遍历方式

← Collection 接口集合的遍历方式 Queue 和 Stack 的常用遍历方式→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式