进阶JAVA篇- Map 系列集合的遍历方法与常用API

news2024/11/15 21:57:37

目录

        1.0 Map 集合的说明

        1.1 Map 集合的常用方法

        1.2 Map 系列集合的特点

        2.0 Map 系列集合的遍历方法(三种方法)

         2.1 使用 keySet() 方法遍历

        2.2 使用 entrySet() 方法遍历

        2.3 使用 forEach() 方法遍历(Java 8+)


        1.0 Map 集合的说明

        Map 是一种集合类型,用于存储键值对key-value pairs)。每个键都是唯一的,而值可以重复。Map 可以根据键快速查找对应的值。在 Map 中,键和值可以是任意类型的对象。简单来说,Map 类是一个接口,是一种容器,存放着键值对类型的元素。

        1.1 Map 集合的常用方法

以代码的方式来介绍 Map 集合的常用方法:

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapAPI {
    public static void main(String[] args) {
        //由于 Map 是一个接口,不能直接 new 一个 Map 类型的对象,
        //所以需要用到 Map 的实现类 HashMap 来创建对象。

        Map<String,Integer> map = new HashMap<>();//一行经典代码

        //1. put(k,v) :实例方法,添加元素
        map.put("二哈",250);
        map.put("金毛",750);
        map.put("拉布拉多",1250);
        map.put("中华田园犬",1359);
        System.out.println(map);
    //输出结果为:{二哈=250, 金毛=750, 中华田园犬=1359, 拉布拉多=1250}

        //2. size() :实例方法,获取元素大小
        int s = map.size();
        System.out.println(s);
        //输出结果为:4

        //3. isEmpty() :实例方法,判断集合是否为空,为空返回true,反之
        boolean b = map.isEmpty();
        System.out.println(b);
        //输出结果为:false

        //4. get(k) :实例方法,根据键获取对应的值
        int i = map.get("二哈");
        System.out.println(i);
        //输出结果为:250

        //5. remove(k) :实例方法,根据键删除整个元素
        map.remove("二哈");
        System.out.println(map);
        //输出结果为:{金毛=750, 中华田园犬=1359, 拉布拉多=1250}

        //6. containsKey(k) :实例方法,判断是否包含某个键
        boolean bk = map.containsKey("二哈");
        System.out.println(bk);
        //输出结果为:false

        //7. containsValue(k) :实例方法,判断是否包含某个值
        boolean bv = map.containsValue(750);
        System.out.println(bv);
        //输出结果为:true

        //8. keySet() :实例方法,获取全部键的集合,
        // 需要用 Set 系列集合来接受。
        Set<String> stringSet = map.keySet();
        System.out.println(stringSet);
        //输出结果为:[金毛, 中华田园犬, 拉布拉多]

        //9. values() :实例方法,获取全部值
        //需要用 Collection 系列集合来接受
        Collection<Integer> collection = map.values();
        System.out.println(collection);
        //输出结果为:[750, 1359, 1250]

        //10. putAll(Map m) :将 m 中的内容全部倒入到调用该方法的集合中。
        Map<String,Integer> map1 = new HashMap<>();
        map1.put("小黑",19999);
        map1.put("小白",29999);
        map.putAll(map1);
        System.out.println(map);
  //输出结果为:{小白=29999, 金毛=750, 小黑=19999, 中华田园犬=1359, 拉布拉多=1250}

        //11. clear() :实例方法,删除整个集合中的元素
        map.clear();
        System.out.println(map);
        //输出结果为:{}

    }
}

运行结果如下:

        1.2 Map 系列集合的特点

        无序:就是不会按照添加的元素输出,随机输出,如以下:

        不可重复:指定的是 ”键“ 是不允许重复出现,后来添加的重复的元素会覆盖相同 ”键“ 的元素,但是 ”值“ 是不做要求,可以重复出现,如以下:

        无索引:因为 Map 系列集合不支持固定的顺序,存在索引自然是没有意义的。

        2.0 Map 系列集合的遍历方法(三种方法)

         2.1 使用 keySet() 方法遍历

        通过 MapkeySet() 方法获取所有的键,然后使用 for-each 循环遍历键,并通过 get() 方法获取对应的值。

通过具体的代码来实现:

public class MapIteration {
    public static void main(String[] args) {

        Map<String,Integer> map = new HashMap<>();
        map.put("二哈",250);
        map.put("金毛",1250);
        map.put("拉布拉多",2250);
        map.put("中华田园犬",3250);

        //先取出该集合的全部”键“
        Set<String> stringSet = map.keySet();
        //然后用增强 for 方法根据”键“通过 get(k) 来查询”值“
        for (String k:stringSet) {
            int v = map.get(k);
            System.out.println(k+"=="+v);
        }
    }
}

运行结果:

        步骤:先取出该集合的全部”键“,再然后用增强 for 方法根据”键“通过 get(k) 方法来查询”值“。

        2.2 使用 entrySet() 方法遍历

        通过 Map entrySet() 方法获取所有的键值对的 Entry 对象,然后使用 for-each 循环遍历 Entry 对象,。简单来说就是,将集合中的一个键值对看作一个整体,然后就用增强 for 循环来遍历集合,再通过 getKey() getValue() 方法获取键和值。

通过具体的代码来实现:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapIteration {

    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("二哈",250);
        map.put("金毛",1250);
        map.put("拉布拉多",2250);
        map.put("中华田园犬",3250);

        //通过调用 map 的实例方法 entrySet(),键值对包装成一个整体,
        //Map.Entry<String,Integer>这代码可以理解为是一个类型,用 Set 系列集合来存储
        Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
        for (Map.Entry<String,Integer> entry:entrySet) {
            String k = entry.getKey();
            int v = entry.getValue();
            System.out.println(k+"=="+v);
        }
    }
}

运行结果为:

        2.3 使用 forEach() 方法遍历(Java 8+)

        通过 Map forEach() 方法,传入一个 BiConsumer 函数接口来遍历键值对。BiConsumer 接口的 accept() 方法接收两个参数,分别是键和值。

        需要注意的是,这里的 forEach()Map 的实例方法。

通过具体的代码来实现:

import java.util.Map;
import java.util.HashMap;

public class MapIteration {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("二哈", 250);
        map.put("金毛", 1250);
        map.put("拉布拉多", 2250);
        map.put("中华田园犬", 3250);
/*        map.forEach(new BiConsumer<String, Integer>() {
            @Override
            public void accept(String k, Integer v) {
                System.out.println(k+"=="+v);
            }
        });*/
        
        //进一步简化为:
        map.forEach((k, v) -> System.out.println(k + "==" + v));
    }
}

运行结果如下:

        补充,其实这种方法本质来说是第二种方法的包装。本质还是使用 entrySet() 方法遍历,源代码如下:

        可见,第三种方法是很容易实现对 Map 系列集合的遍历的,就需要一行代码就搞定了,也很容易记住:

map.forEach((k, v) -> System.out.println(k + "==" + v));

         本篇先介绍到这里,更多内容点击以下链接:  小扳_-CSDN博客 



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1125892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法——选择排序法

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

镇魂街武神躯手游攻略,镇魂街武神躯神魂搭配

武神躯是《镇魂街》手游中令人敬畏的角色之一&#xff0c;技能的合理搭配至关重要。下面将详细介绍镇魂街武神躯手游攻略如何搭配武神躯的技能以取得最佳战斗效果&#xff1a; 关注【娱乐天梯】&#xff0c;获取内部福利号 1. 主动技能-刺客之心&#xff1a;这是武神躯的核心主…

python 桌面软件开发-matplotlib画图鼠标缩放拖动

继上一篇在 Java 中缩放拖动图片后&#xff0c;在python matplotlib中也来实现一个自由缩放拖动的例子&#xff1a; python matplotlib 中缩放&#xff0c;较为简单&#xff0c;只需要通过设置要显示的 x y坐标的显示范围即可。基于此&#xff0c;实现一个鼠标监听回调&#xf…

python安装的第三方库

安装第三方库的方式 先按“winR”并输入 cmd 打开命令运行窗口 输入命令&#xff1a; pip install 包名&#xff0c;比如要安装gym包就输入pip install gym 可能存在报错问题及解决办法 报错Could not fetch URL https://pypi.tuna.tsinghua.edu.cn/simple/pip/: There was …

基于Java的美食推荐管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

SparkSQL的Shuffle分区设定及异常数据处理API(去重、缺失值处理)

一、Spark SQL的Shuffle分区数目设定 在允许spark程序时&#xff0c;查看WEB UI监控页面发现&#xff0c;某个Stage中有200个Task任务&#xff0c;也就是说RDD有200分区Partion。 产生原因&#xff1a; 在Spark SQL中&#xff0c;当Job中产生Shuffle时&#xff0c;默认的分区数…

Android乐器在线租借租赁系统+全套手把手视频教程

【项目功能介绍】 功能列表: 本系统包含后台管理和前端app双端系统, 本系统包含三个角色: 管理员,员工,app用户。 后台管理员的功能包含: 登录, 退出, 乐器管理,添加乐器,修改乐器,禁用启用乐器; 乐器器械管理,添加乐器器械,修改乐器器械,启用禁用乐器器械; 订单管理,确定订单…

Node学习笔记之fs模块

fs 全称为 file system &#xff0c;称之为 文件系统 &#xff0c;是 Node.js 中的 内置模块 &#xff0c;可以对计算机中的磁盘进行操 作。 本章节会介绍如下几个操作&#xff1a; 文件写入文件读取文件移动与重命名文件删除文件夹操作查看资源状态 一、文件写入 文件写入就…

Vercel,建站者的福音!!!

前言 各位互联网精神股东大家好&#xff01; 在今年八九月份之前&#xff0c;我所搭建的杂七杂八的个人、团队应用&#xff0c;包括但不限于文档站&#xff0c;博客站&#xff0c;Api服务&#xff0c;线上项目等&#xff0c;他们背后的服务支持可以归纳为以下几种&#xff1a…

Arduion 驱动 ADXL335三轴加速度计模块

Arduion 驱动 ADXL335三轴加速度计模块 简介电气参数原理图接线代码实验结果 简介 ADXL335是一个小&#xff0c;薄&#xff0c;低功率&#xff0c;完整的三轴加速度计&#xff0c;具有信号调节电压输出。该产品测量加速度的最小全尺度范围为3 g。它可以测量倾斜传感应用中重力…

【微信小程序开发】之微信授权登陆

目录 前言 ​编辑一、微信授权登陆介绍 1. 基本概念 2. 微信小程序开发实现微信授权登陆原理流程 3. 小程序中运用微信授权登陆的好处 二、微信授权登陆接口演示 1. 在微信开发工具中导入小程序授权微信登陆前端项目 2. 微信授权登陆的方式 2.1 wx.login 2.2 wx.getUse…

提高查询性能的秘密:深入剖析聚集、辅助、覆盖和联合索引

文章目录 &#x1f34a; 聚集索引&#x1f34a; 辅助索引&#x1f34a; 覆盖索引&#x1f389; 覆盖索引是什么&#xff1f;&#x1f389; 什么情况下优化器会选择使用覆盖索引&#xff1f;&#x1f4dd; 1. 查询操作只需要用到辅助索引中的字段&#x1f4dd; 2. 进行统计操作时…

使用Java实现汉诺塔问题~

我们设A为起始柱子&#xff0c;B为辅助柱子&#xff0c;C为目标柱子 由于盘子只能是大的放在下面&#xff0c;小的放在上面&#xff0c;因此&#xff0c;我们需要先将A柱子除了最下层的盘子都移动至B柱子 如下所示完成了最下层柱子到达它的最终位置&#xff0c;接下来&#xf…

Git(一)Windows下安装及使用Git Bash

目录 一、简介1.1 什么是Git&#xff1f;1.2 Git 的主要特点1.3 什么是 Git Bash&#xff1f; 二、下载三、安装3.1 同意协议3.2 选择安装位置3.3 其他配置&#xff08;【Next】 即可&#xff09;3.4 安装完毕3.5 打开 Git Bash 官网地址&#xff1a; https://www.git-scm.com/…

【React Router】React Router学习笔记

React Router学习笔记 React Router1.什么是React Router?2.为什么要用React Router?3.基础3.1 路由配置3.2 路由匹配原理3.3 History3.3.1 browerHistory3.3.2 hashHistory3.3.3 createMemoryHistory3.3.4 实现示例 3.4 默认路由(IndexRoute)与IndexLink3.4.1 IndexRoute3.4…

javaEE -6(10000详解文件操作)

一&#xff1a;认识文件 我们先来认识狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备&#xff0c;当我们想要进行数据保存时&#xff0c;往往不是保存成一个整体&#xff0c;而是独立成一个个的单位进行保存&#xff0c;这个独立的单位就被抽象成文件的概念&#xff0c…

畅行全球,美格智能SLM750模组锻造出海核心优势

什么是产品认证制度&#xff1f; 国际标准化组织&#xff08;ISO&#xff09;将产品认证定义为&#xff1a;由第三方通过检验评定企业的质量管理体系和样品型式试验来确认企业的产品、过程或服务是否符合特定要求&#xff0c;是否具备持续稳定地生产符合标准要求产品的能力&am…

蓝桥每日一题(day 5: 蓝桥593.既约分数)--数学--easy(注:排掉一个重复的情况)

考察gcd模板求解最大公约数。由于我是2去做的&#xff0c;实际上当ij1的时候&#xff0c;能构成的分数只能是一种情况&#xff0c;所以最后的res需要减去1&#xff01;&#xff01;&#xff01; #include <iostream> using namespace std;int gcd(int a, int b){return …

【Bayes-LSTM预测】基于贝叶斯优化算法优化长短期记忆网络的数据分类预测研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

建材物料经营小程序商城的作用是什么

对商家而言&#xff0c;入驻到第三方平台&#xff0c;除了受平台各种限制外&#xff0c;还有佣金/抽成等&#xff0c;也不利于打造私域流量池及会员管理、营销、转化、复购裂变留存等&#xff0c;只能依赖平台活动进行经营。 如今线下流量匮乏及难获取&#xff0c;发传单口口相…