map集合常见的几种遍历方式(超详细)

关于map集合的遍历,还是有很多方式的,接下来就由我为大家,演示一下爱比较常用的关于map集合的遍历方式。

第一种遍历方式--键找值: 先获取map集合全部的键,在通过遍历键,来找值。

java 复制代码
public static void main(String[] args) {
        //第一种遍历方式 键找值
        Map<String,Integer> map = new HashMap<>();
        map.put("huawei",7999);
        map.put("java入门课程",29);
        map.put("redmi",1999);
        map.put("oppo",3999);
        map.put("vivi",899);
        System.out.println(map);
 
        // 获取所有的key
        Set<String> keys = map.keySet();
        Collection<Integer> values = map.values();
        for (String key : keys) {
            Integer value = map.get(key);
            System.out.println(key +" ===> " + value);
        }
    }
 
 
    /**
     * {huawei=7999, vivi=899, oppo=3999, redmi=1999, java入门课程=29}
     * huawei ===> 7999
     * vivi ===> 899
     * oppo ===> 3999
     * redmi ===> 1999
     * java入门课程 ===> 29
     */

这种方式遍历map集合的缺点就是,使用增强for循环遍历的时候,无法直接确定元素类型。

java 复制代码
for(元素类型  keys: map){

        ...

}

第二种方式--键值对:

java 复制代码
  public static void main(String[] args) {
        //第一种遍历方式 键值对
        Map<String,Integer> map = new HashMap<>();
        map.put("huawei",7999);
        map.put("java入门课程",29);
        map.put("redmi",1999);
        map.put("oppo",3999);
        map.put("vivi",899);
        System.out.println(map);
 
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        for (Map.Entry<String, Integer> entry : entries) {
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key+" ===> "+value);
        }
    }
 
 
  /**
     * {huawei=7999, vivi=899, oppo=3999, redmi=1999, java入门课程=29}
     * huawei ===> 7999
     * vivi ===> 899
     * oppo ===> 3999
     * redmi ===> 1999
     * java入门课程 ===> 29
     */

第三种方式:Lamdba表达式: 这是jdk1.8开始之后的新技术(非常简单便捷)

java 复制代码
 public static void main(String[] args) {
        //第一种遍历方式 lambda表达式遍历
        Map<String,Integer> map = new HashMap<>();
        map.put("huawei",7999);
        map.put("java入门课程",29);
        map.put("redmi",1999);
        map.put("oppo",3999);
        map.put("vivi",899);
        System.out.println(map);
 
        //匿名内部类
        map.forEach(new BiConsumer<String, Integer>() {
            @Override
            public void accept(String key, Integer value) {
                System.out.println(key  +" ===> "+ value);
            }
        });
    }
 
 /**
     * {huawei=7999, vivi=899, oppo=3999, redmi=1999, java入门课程=29}
     * huawei ===> 7999
     * vivi ===> 899
     * oppo ===> 3999
     * redmi ===> 1999
     * java入门课程 ===> 29
     */
java 复制代码
lamdba表达式简化写法1:
  public static void main(String[] args) {
        //第一种遍历方式 lambda表达式遍历
        Map<String,Integer> map = new HashMap<>();
        map.put("huawei",7999);
        map.put("java入门课程",29);
        map.put("redmi",1999);
        map.put("oppo",3999);
        map.put("vivi",899);
        System.out.println(map);
 
        //简化写法lamdba表达式
        map.forEach((String key, Integer value) -> {
                System.out.println(key  +" ===> "+ value);
        });
    }
 
 
/**
 * huawei ===> 7999
 * vivi ===> 899
 * oppo ===> 3999
 * redmi ===> 1999
 * java入门课程 ===> 29
 */

lamdba表达式简化写法2:

java 复制代码
public static void main(String[] args) {
        //第一种遍历方式 lambda表达式遍历
        Map<String,Integer> map = new HashMap<>();
        map.put("huawei",7999);
        map.put("java入门课程",29);
        map.put("redmi",1999);
        map.put("oppo",3999);
        map.put("vivi",899);
        System.out.println(map);
 
        map.forEach((key,value) -> System.out.println(key  +" ===> "+ value));
    }
 
    /**
     * huawei ===> 7999
     * vivi ===> 899
     * oppo ===> 3999
     * redmi ===> 1999
     * java入门课程 ===> 29
     */

第五种遍历方式--stream流:

java 复制代码
 public static void main(String[] args) {
        //第四种遍历方式 stream流
        Map<String,Integer> map = new HashMap<>();
        map.put("huawei",7999);
        map.put("java入门课程",29);
        map.put("redmi",1999);
        map.put("oppo",3999);
        map.put("vivi",899);
        System.out.println(map);
 
        System.out.println("------------------");
        map.entrySet().stream().forEach(e -> System.out.println(e));
 
    }
 
    /**
     * huawei=7999
     * vivi=899
     * oppo=3999
     * redmi=1999
     * java入门课程=29
     */
相关推荐
武子康6 小时前
Java-07 深入浅出 MyBatis数据库一对多关系模型实战:表结构设计与查询实现
java·后端
花椒技术7 小时前
企业内部 Agent 落地复盘:Gateway、Skill 和二次确认如何串起受控业务执行
后端·agent·ai编程
我是一颗柠檬8 小时前
【MySQL全面教学】MySQL事务与ACID Day9(2026年)
数据库·后端·mysql
枕星而眠9 小时前
数据结构八大排序详解(一):四大简单排序
c语言·数据结构·c++·后端
IT_陈寒9 小时前
React useEffect闭包陷阱差点把我整失业了
前端·人工智能·后端
苍何9 小时前
爆肝两周,我把 Codex 最全实战指南开源了
后端
bug菌10 小时前
【SpringBoot 3.x 第254节】夯爆了,数据库访问性能优化实战详解!
数据库·spring boot·后端
Rust研习社10 小时前
从碎片化到标准化:cargo-bp 如何重构 Rust 开发逻辑
后端·rust·编程语言
锋行天下10 小时前
一句mysql复杂查询搞崩一个壮汉
后端·mysql·go
不肯过江东丶10 小时前
大聪明教你学Java | Spring AI Lab:一个让你 3 分钟接入 AI 对话能力的 Spring Boot 工具箱
spring boot·后端