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
     */
相关推荐
IT_陈寒20 分钟前
React状态管理终极对决:Redux vs Context API谁更胜一筹?
前端·人工智能·后端
晨星shine1 小时前
GC、Dispose、Unmanaged Resource 和 Managed Resource
后端·c#
蝎子莱莱爱打怪1 小时前
OpenClaw 从零配置指南:接入飞书 + 常用命令 + 原理图解
java·后端·ai编程
倚栏听风雨2 小时前
【ES避坑指南】明明存的是 "CodingAddress",为什么 term 查询死活查不到?彻底搞懂 text 和 keyword
后端
程序员爱钓鱼2 小时前
Go 操作 Windows COM 自动化实战:深入解析 go-ole
后端·go·排序算法
回家路上绕了弯2 小时前
深入解析Agent Subagent架构:原理、协同逻辑与实战落地指南
分布式·后端
子玖2 小时前
实现微信扫码注册登录-基于参数二维码
后端·微信·go
IT_陈寒2 小时前
JavaScript代码效率提升50%?这5个优化技巧你必须知道!
前端·人工智能·后端
IT_陈寒2 小时前
Java开发必知的5个性能优化黑科技,提升50%效率不是梦!
前端·人工智能·后端
东风t西瓜2 小时前
飞书项目与多维表格双向同步
后端