Map双列集合的四种遍历方式

2023-11-15

Map双列集合的四种遍历方式

第一种:键找值遍历方式

  1. 通过keySet()方法可以获取到所有键组成的Set集合。
  • public Set<K> keySet(): 获取所有键组成的Set集合
    
  1. 遍历Set集合获取到每一个键之后,通过get方法获取到对应的值。

    案例:

    public class MapDemo3 {
        public static void main(String[] args) {
            HashMap<String, String> students = new HashMap<>();
            students.put("小三","北京市昌平区");
            students.put("小四","北京市昌平区");
            students.put("小五","北京市海淀区");
            students.put("小六","北京市门头沟区");
    
            //Map遍历方式(1):键找值:获取所有键,在通过键找值
            //1、获取到所有键组成的set集合 keySet方法
            Set<String> keys = students.keySet();
            //2、遍历Set集合获取每一个键,通过get方法获取值
            for (String key : keys) {
                String value = students.get(key);
                System.out.println("[key]:"+key+"  [value]:"+value);
      
            }
        }
    }
    

第二种:键值对遍历方式(重点)

  1. 通过entrySet方法可以获取到所有键值对对象组成的Set集合。

    • public Set<Map.Entry<K,V>> entrySet() : 获取所有键组成的Set集合
      
  2. 遍历Set集合获取每一个键值对对象之后可以通过键值对对象的方法获取里面封装的键与值。

    • public K getKey() : 获取键值对中的键
      public V getValue() : 获取键值对中的值
      

    案例:

    public class MapDemo4 {
        public static void main(String[] args) {
            HashMap<String, String> students = new HashMap<>();
            students.put("小三", "北京市昌平区");
            students.put("小四", "北京市昌平区");
            students.put("小五", "北京市海淀区");
            students.put("小六", "北京市门头沟区");
    
            //Map的遍历方式(2):键值对 获取所有键值对对象之后,遍历获取到每一个键值对对象,在获取key和value
    
            //1、entrySet方法获取所有的键值对对象 注意:调用方法之后自然返回值即可
            Set<Map.Entry<String, String>> entrySet = students.entrySet();
    
            for (Map.Entry<String, String> entry : entrySet) {
                String key = entry.getKey();
                String value = entry.getValue();
                System.out.println("key:"+key+"   value:"+value);
            }
        }
    }
    

第三种:获取所有值方式

  1. Map中的提供了获取所有值的方法,但是此方法只可以获取到所有的值,无法通过值获取到键。

    • 通过values方法可以获取到所有值组成的集合

    • public Collection<V> values() : 获取所有值组成的Collection集合。
          //因为值会重复所以返回的是Collection集合
      

      案例:

      public class MapDemo5 {
          public static void main(String[] args) {
              HashMap<String, String> students = new HashMap<>();
              students.put("小三", "北京市昌平区");
              students.put("小四", "北京市昌平区");
              students.put("小五", "北京市海淀区");
              students.put("小六", "北京市门头沟区");
      
              //Map遍历方式(3):获取所有值
              Collection<String> values = students.values();
              System.out.println("values:"+values);
          }
      }
      

第四种:Java8的foreach遍历方式(函数式编程思想 重点)

  1. 实际上Map提供了一个方法,可以自动完成Map的遍历,开发者需要提供的就是如何使用获取到的键与值。

    • 函数式编程思想:不管怎么去做(不管怎么获取键和值),而是强调去做什么(键和值要去怎么用)。

    • public void foreach(BiConsumer<K,V> consumer) : 按照指定的逻辑使用Map中的每一个键值
      

      案例:

      public class MapDemo6 {
          public static void main(String[] args) {
              HashMap<String, String> students = new HashMap<>();
              students.put("小三", "北京市昌平区");
              students.put("小四", "北京市昌平区");
              students.put("小五", "北京市海淀区");
              students.put("小六", "北京市门头沟区");
      
              //Map的遍历方式(4):foreach[函数式编程]
              //1、调用foreach方法,在方法的参数中传递BiConsumer接口的实现对象,实现accept(消费键值的方法)
              //使用的是匿名内部类。
              students.forEach(new BiConsumer<String, String>() {
                  //参数1:键 参数2:值
                  //实现accept方法
                  @Override
                  public void accept(String key, String value) {
                      //accept方法中Map会自动获取到的每一个键,值作为参数传递(通过key+value去做什么)
                      System.out.println("key:"+key+"  value:"+value);
                  }
              });
          }
      }
      
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Map双列集合的四种遍历方式 的相关文章

随机推荐

  • 程序员必备在线代码对比工具 检查新旧代码差异化

    在工作的时候有用到代码比对工具 用来检查功能调试的时候功能迭代的时候出现故障 希望检查和原始代码到底有什么区别 因此 老蒋本来今天打算整理8 10个在线代码对比工具的 但是考虑到我们在选择工具的时候 在众多工具中选择一款适合自己的即可 否则
  • iOS应用内支付(内购)的个人开发过程及坑!

    本文会给大家详细介绍iOS内购 这是本人16年5月底的开发过程 希望对看完此篇文章的人有所帮助 本文基于XcodeVersion 7 3 7D175 版本 手机是iPhone 6 9 3系统 部分地方直接摘自网络 基本上是我的逻辑 省时省心
  • MP4文件格式详解——结构概述

    http blog csdn net pirateleo article details 7061452 MP4文件格式详解 ISO 14496 12 14 Author Pirate Leo Email codeevoship gmail
  • python毕业设计 大数据房价数据分析及可视化 房价分析

    文章目录 1 课题背景 2 数据爬取 2 1 爬虫简介 2 2 房价爬取 3 数据可视化分析 3 1 ECharts 3 2 相关可视化图表 1 课题背景 房地产是促进我国经济持续增长的基础性 主导性产业 如何了解一个城市的房价的区域分布
  • 【Linux】权限

    Linux基本权限 权限 人 事物属性 文章目录 Linux基本权限 文件属性 用户 文件权限 目录权限 结束语 文件属性 目录dir和文件me txt前最开始的d和 是文件属性 例如 中间的横线 普通文件 文本 可执行文件 归档文件等 d
  • Java学习(11):Java实现图书馆书库管理系统

    接上次博客 Java学习 10 多接口 接口的继承 抽象类和接口的区别 Object类 toString equals hashcode 接口实例 compareTo clone 浅拷贝和深拷贝 内部类 di Dora的博客 CSDN博客
  • LocalDateTime和Date得转换

    Java8 LocalDateTime获取时间戳 毫秒 秒 LocalDateTime与String互转 Date与LocalDateTime互转 LocalDateTime获取时间戳 毫秒 秒 LocalDateTime与String互转
  • vue3中JSX结合h()函数的用法简记

    vue3中JSX结合h 函数的用法简记 1 起因 为了实现表单设计通过左侧拖拽展示不同的组件 且这些组件内都渲染着一个公用的文本方法 删除和复制的功能 封装成一个组件CopyDelete 于是用到了如何通过h 函数将CopyDelete插入
  • 改变antd-mobile中Modal的进入方式

    增加属性maskTransitionName 和 transitionName maskTransitionName zoom transitionName zoom zoom样式是 scale 0 2 scale 1 参考文档
  • XML语言

    XML XML是可扩展的标记语言 标记语言 通过标签来描述数据的一门语言 标签有时我们也将其称之为元素 可扩展 标签的名字是可以自定义的 XML文件是由很多标签组成的 而标签名是可以自定义的 xml学习网站https www w3schoo
  • p51 thinkpad 拆解_ThinkPad P51自己加装内存操作图解

    把全部螺丝拧松之后 从缺口发力 分别沿着两个方向逐步拉开盖板 最终把整个盖板拆下来 第二步 拆键盘螺丝 打开大盖板之后 还有三个键盘螺丝要拆 具体位置如图所示 图片看不清的话 注意查看螺丝附近的标记 看到是键盘标记的就拆下来就对了 这是三根
  • 安装 jupyter 和 numpy,并运行jupyter,完成numpy的不少于10道的基础练习,熟悉矩阵运算。

    文章目录 一 安装Anaconda 1 在Anaconda Navigator中无法打开jupyter 二 使用jupyter notebook完成编程 1 引入库 2 基础练习 三 总结 四 引用 一 安装Anaconda 在官方网站即可
  • 微信小程序组件的传参

    父子关系 1 父向子传参 子组件 通过 properties 声明要从父组件中接收的数据 组件的属性列表 properties tabId String 父组件 通过自定义属性的形式传递数据 以子组件中定义的 key 为属性名 以要传递的数
  • 等保2.0二级安全要求

    第二级安全保护能力 应能够防护免受来自外部小型组织的 拥有少量资源的威胁源发起的恶意攻击 一般的自然灾害 以及其他相当危害程度的威胁所造成的重要资源损害 能够发现重要的安全漏洞和处置安全事件 在自身遭到损害后 能够在一段事件内恢复部分功能
  • Android中字母大小写切换的快捷键

    1 选中要切换到字母 eclipse ctrl shift x 转为大写 ctrl shift y 转为小写 2 Androidstudio字母大小写切换用一下方法或直接使用快捷键 大小写转换 Cmd Shift U Ctrl Shift
  • 使用Docker-compose部署redis主从

    废话少说 直接来上docker compose yaml文件 切记格式 version 2 networks myweb external name mysql docker compose myweb services redis mas
  • ICLR 2022最佳论文解读

    微信公众号 圆圆的算法笔记 持续更新NLP CV 搜推广干货笔记和业内前沿工作解读 后台回复 交流 加入 圆圆的算法笔记 交流群 回复 时间序列 多模态 迁移学习 NLP 图学习 表示学习 元学习 等获取各个领域干货算法笔记 今天给大家介绍
  • Nginx配置详情

    Nginx1 16 0安装详见 CentOS7 3编译安装LNMP之 一 Nginx 1 16 0安装 本文以nginx1 16 0编译安装版为例 目录如下 usr local nginx nginx的安装目录 usr local ngin
  • “logits”到底是个什么意思?

    1 什么是logits 说到Logits 首先要弄明白什么是Odds 在英文里 Odds的本意是指几率 可能性 它和我们常说的概率又有什么区别呢 在统计学里 概率 Probability 描述的是某事件A出现的次数与所有事件出现的次数之比
  • Map双列集合的四种遍历方式

    Map双列集合的四种遍历方式 第一种 键找值遍历方式 通过keySet 方法可以获取到所有键组成的Set集合 public Set