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
     */
相关推荐
无限大66 小时前
计算机十万个为什么--数据库索引
后端
学历真的很重要6 小时前
VsCode+Roo Code+Gemini 2.5 Pro+Gemini Balance AI辅助编程环境搭建(理论上通过多个Api Key负载均衡达到无限免费Gemini 2.5 Pro)
前端·人工智能·vscode·后端·语言模型·负载均衡·ai编程
+VX:Fegn08957 小时前
计算机毕业设计|基于springboot + vue心理健康管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
狂炫冰美式8 小时前
不谈技术,搞点文化 🧀 —— 从复活一句明代残诗破局产品迭代
前端·人工智能·后端
databook9 小时前
数据会说谎?三大推断方法帮你“审问”数据真相
后端·python·数据分析
代码栈上的思考10 小时前
深入解析Spring IoC核心与关键注解
java·后端·spring
expect7g11 小时前
Paimon源码解读 -- Compaction-2.KeyValueFileWriterFactory
大数据·后端·flink
小灰灰搞电子11 小时前
Rust 动态分发(dyn Trait)详解
开发语言·后端·rust
码事漫谈11 小时前
深入剖析进程、线程与虚拟内存
后端
码事漫谈11 小时前
MFC核心架构深度解析
后端