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
     */
相关推荐
上进小菜猪7 小时前
把 KES 集群交给 Kubernetes 的九十天:一个 DBA 的试用实录
后端
两点王爷8 小时前
PostgreSQL 常用 SQL 语句与 GIS 相关函数详解
数据库·后端
考虑考虑8 小时前
Springboot环境变量占位符语法
spring boot·后端·spring
步行cgn10 小时前
Spring 基于 XML 的自动装配:byName 详解
java·后端·spring
RISCV_Explorer12 小时前
RISC-V启动与运行时规范机制解析——BRS约定、HSM多核启动与设备树要求
后端·risc-v
星栈独行12 小时前
ADK-Rust 是什么?Rust 生态新一代 AI Agent 开发套件
人工智能·后端·rust
JavaGuide12 小时前
对标 MinIO!全新一代分布式文件系统正式发布
前端·后端
用户83562907805113 小时前
使用 Python 将 DOCX 转换为 Markdown
后端·python
IT_陈寒13 小时前
Vue computed属性这个坑,我居然踩了三次才爬出来
前端·人工智能·后端
孙启超14 小时前
【AI开发之Rust】第 7 课:错误处理 —— panic、Result 与 `?`
人工智能·分布式·后端·爬虫·spring cloud·架构·rust