JAVA双列集合Map的特点

一次存一对元素,分别是 键 和 值,他们是一 一对应的:
image.png
其中:
键不可以重复,值可以重复
这一对数据叫键值对、键值对对象、或 Entry


Map 的体系结构:

image.png
Snipaste_2024-01-29_10-13-11.png


Map的常见API:

image.png

方式的实现:
注意 Map 接口的泛型有两个参数,一个是键,一个是值Snipaste_2024-01-29_08-26-36.png

//创建对象
Map<String,String>map=new HashMap<>();


//put:1.添加元素
map.put("喜羊羊","灰太狼");
map.put("熊大","熊二");

/* //put:2.覆盖元素
        String result = map.put("喜羊羊", "美羊羊");
        System.out.println(result);//灰太狼    (返回被覆盖的值)*/

/*//remove根据键删除键值对 对象
        map.remove("喜羊羊");*/

/* //clear
        map.clear();*/

/* //containKey
        System.out.println(map.containsKey("喜羊羊"));

        //containsValue
        System.out.println(map.containsValue("熊二"));*/

/*   //is Empty
        System.out.println(map.isEmpty());*/

//size键值对个数
System.out.println(map.size());

//get
System.out.println(map.get("喜羊羊"));
//打集合
System.out.println(map);

要注意的就是 put 方法有两个作用:

  • 当添加的键不存在时,会直接添加该键值对,方法返回 null
  • 当添加的键存在时,会覆盖原有的键值对,并把被覆盖的值返回

Map 的遍历方式:

键找值(KeySet 方法+之前的遍历方法)

image.png

演示:

//创建集合
Map<String,String> map =new HashMap<>();
//添加键值对
map.put("喜羊羊","灰太狼");
map.put("熊大","熊二");
map.put("刘备","孙尚香");
//将键添加进set集合
Set<String> keys = map.keySet();
//遍历键---增强for
for(String key:keys){
    System.out.println(key+" "+map.get(key))
}
//或者迭代器:
Iterator<String> it = keys.iterator();
while(it.hasNext()){
    String str=it.next();//因为next要多次使用,最好交给一个变量
    System.out.println(str+" "+map.get(str));
}
//或者lambda
keys.forEach(s-> System.out.println(s+" "+map.get(s)));

熊大 熊二
刘备 孙尚香
喜羊羊 灰太狼


键值对(entrySet+之前的遍历方法)

Snipaste_2024-01-29_09-49-44.png
要知道 Entry 接口内,直接有 getKey 和 getValue 方法,遍历很方便

//创建集合
Map<String, String> m = new HashMap<>();
//添加键值对
m.put("喜羊羊", "灰太狼");
m.put("熊大", "熊二");
m.put("刘备", "孙尚香");
//将键值对放入Set集合,这个集合实现了Map.Entry接口
Set<Map.Entry<String, String>> entries = m.entrySet();

//增强for
for (Map.Entry<String, String> entry : entries) {
    System.out.println(entry.getKey() + " " + entry.getValue());

}

//迭代器
Iterator<Map.Entry<String, String>> it = entries.iterator();
while (it.hasNext()) {
    Map.Entry<String, String> e = it.next();
    System.out.println(e.getKey() + " " + e.getValue());
}

//lambda表达式
entries.forEach( e-> System.out.println(e.getKey() + " " + e.getValue()));

熊大 熊二
刘备 孙尚香
喜羊羊 灰太狼


Lambda 表达式:

在 forEach 的基础上使用 Lambda 表达式
Snipaste_2024-01-29_09-54-47.png

//创建集合
Map<String, String> m = new HashMap<>();
//添加键值对
m.put("喜羊羊", "灰太狼");
m.put("熊大", "熊二");
m.put("刘备", "孙尚香");


//普通forEach
m.forEach(new BiConsumer<String, String>() {
    @Override
    public void accept(String Key, String Value) {
        System.out.println(Key + " " + Value);
    }
});

//使用lambda表达式改进
m.forEach((String Key, String Value) -> System.out.println(Key + " " + Value));

熊大 熊二
刘备 孙尚香
喜羊羊 灰太狼

forEach 底层:

//for Each其实就是利用第二种方式进行遍历,依次得到每一个键和值
//再调用accept方法
Snipaste_2024-01-29_10-09-57.pngSnipaste_2024-01-29_10-10-13.png


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch7.7.1集群搭建 Kibana安装

前言 Elasticsearch&#xff08;ES&#xff09;是一个基于Apache Lucene的分布式、高扩展、近实时的搜索引擎&#xff0c;主要用于海量数据快速存储、实时检索、高效分析的场景。通过简单易用的RESTful API&#xff0c;Elasticsearch隐藏了Lucene的复杂性&#xff0c;使得全文搜…

86.网游逆向分析与插件开发-物品使用-物品丢弃的逆向分析与C++代码的封装

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;物品使用的逆向分析与C代码的封装-CSDN博客 码云地址&#xff08;ui显示角色数据 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;7563f86877c…

JVM-类的生命周期

类的生命周期概述 类的生命周期描述了一个类加载、使用、卸载的整个过程。整体可以分为&#xff1a; 加载 连接&#xff0c;其中又分为验证、准备、解析三个子阶段 初始化 使用 卸载 加载阶段 加载(Loading)阶段第一步是类加载器根据类的全限定名通过不同的渠道以二进制流的方…

c++|类和对象(下)

一、再谈构造函数 1.1初始化列表 在上一章节中&#xff0c;对于类我们可以形象的比喻为房子的图纸&#xff0c;而真正对于类的初始化可以比喻为建造了一个实体房子&#xff0c;即创建对象&#xff0c;对于房子中的各个房间都有特定的位置构造&#xff0c;那么对于类中的成员变…

一张图搞清楚HTTP状态码

HTTP状态码的基本概念 在客户端和服务器连接交互的时候&#xff0c;一般是客户端先给服务器发送请求&#xff0c;然后服务器返回结果。客户端和服务器之间的交互非常频繁&#xff0c;涉及到很多种不同类型的操作&#xff0c;大多数的时候服务器能成功返回结果&#xff0c;有时…

DC-磁盘配额(23国赛真题)

2023全国职业院校技能大赛网络系统管理赛项–模块B&#xff1a;服务部署&#xff08;WindowServer2022&#xff09; 文章目录 DC-磁盘配额题目配置步骤验证查看DC2驱动器C:\的磁盘配额&#xff0c;限制磁盘空间&#xff0c;警告等级等配置 DC-磁盘配额 题目 在DC2驱动器C:\上…

全新魅思V20正规视频影视系统源码/APP+H5视频影视源码

全新魅思V20正规视频影视系统源码&#xff0c;APPH5视频影视源码。会员花费三千购入的&#xff0c;具体搭建教程放压缩包了&#xff01; 有兴趣的下载自行研究吧&#xff0c;搭建一共要用到3个域名&#xff0c;可以拿二级域名搭建。

PMP重考流程与费用

很多参加PMP考试的考生都经历过辛勤的学习过程&#xff0c;特别是那些在毕业几年后才开始备考的人。对大多数人来说&#xff0c;PMP考试都是一项艰难的任务。尽管PMP考试的平均通过率超过90%&#xff0c;但仍然有些人无法在首次尝试中通过考试。那么&#xff0c;如果一次没有通…

Linux ---- Shell编程之正则表达式

一、正则表达式 ​ 由一类特殊字符及文本字符所编写的模式&#xff0c;其中有些字符&#xff08;元字符&#xff09;不表示字符字面意义&#xff0c;而表示控制或通配的功能&#xff0c;类似于增强版的通配符功能&#xff0c;但与通配符不同&#xff0c;通配符功能是用…

Apache POI 处理excel文件 记录用法

Apache POI 写excel public static void write() throws IOException {//再内存中创建了一个Excel文件XSSFWorkbook excel new XSSFWorkbook();//创建一个sheet页XSSFSheet sheet excel.createSheet("info");//这里创建行对象,这里的rownum 是从0开始的,类似于数…

Redis学习——高级篇①

Redis学习——高级篇① Redis7高级之单线程和多线程&#xff08;一&#xff09; 一、Redis单线程VS多线程1.Redis的单线程部分1.1 Redis为什么是单线程&#xff1f;1.2 Redis所谓的“单线程”1.3 Redis演进变化1.3.1 Redis 3.x 单线程时代性能很快的原因1.3.2…

Python处理图片生成天际线(2024.1.29)

1、天际线简介 天际线&#xff08;SkyLine&#xff09;顾名思义就是天空与地面的边界线&#xff0c;人站在不同的高度&#xff0c;会看到不同的景色和地平线&#xff0c;天空与地面建筑物分离的标记线&#xff0c;不得不说&#xff0c;每天抬头仰望天空&#xff0c;相信大家都可…

窥探向量乘矩阵的存内计算原理—基于向量乘矩阵的存内计算

在当今计算领域中&#xff0c;存内计算技术凭借其出色的向量乘矩阵操作效能引起了广泛关注。本文将深入研究基于向量乘矩阵的存内计算原理&#xff0c;并探讨几个引人注目的代表性工作&#xff0c;如DPE、ISAAC、PRIME等&#xff0c;它们在神经网络和图计算应用中表现出色&…

三维模型设计新纪元:3D开发工具HOOPS在机械加工行业的应用与优势

在当今快速发展的科技时代&#xff0c;机械加工行业正经历着巨大的变革&#xff0c;而HOOPS技术正是其中一项重要的创新。HOOPS技术不仅仅是一种用于处理和可视化计算机辅助设计&#xff08;CAD&#xff09;数据的工具&#xff0c;更是机械加工领域中提升效率、优化设计的利器。…

SI3933 15k-125kHZ低频唤醒开发技术资料

SI3933完美兼容&#xff1a;AS3933.PAN3501,GC3933Si3933 是一款三通道的低功耗 ASK 接收机&#xff0c;可用于检测 15kHz-150kHz 低频载波频率的数字信号&#xff0c;并产生唤醒信号。内部集成的校验器用于检测 16 位或 32 位曼彻斯特编码的唤醒向量&#xff0c;且支持两次重复…

超声波自动气象站是什么?

TH-CQX12超声波自动气象站是一种利用超声波技术进行气象观测和数据采集的自动化设备。它能够实时监测温度、湿度、风速、风向、气压、雨量等多种气象要素&#xff0c;并通过无线传输方式将数据发送到数据中心进行分析和处理。 与传统气象站相比&#xff0c;超声波自动气象站具有…

申万宏源:证券低时延交易系统全链路自主可控创新实践 |论坛实录

由中科驭数主办的第二届证券基金行业先进计算技术大会暨2024低时延技术创新实践论坛&#xff08;上海站&#xff09;在上海举行。会上各位嘉宾深入的分享&#xff0c;吸引了不少行业同仁对本次会议干货内容的关注。特此&#xff0c;中科驭数整理部分演讲者发言实录&#xff0c;…

ARM汇编 2.arm常用指令

MOV 赋值操作 寄存器 < 寄存器/存储器/立即数 MOV{条件}{S} 目的寄存器&#xff0c;源操作数 没有S时指令不更新 CPSR 中条件标志位的值 立即数&#xff1a;由0-255之间的数据循环右移偶数位生成。(移动规则不用掌握) #0xfff不是立即数&#xff0c;而0x80000001是立即数 …

Mysql-ReadView + MVCC-RR 与 RC

实验准备 创建脚本 CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT,name varchar(16) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,age int(11) NULL DEFAULT NULL,addr varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,PRIMARY …

3款最好用的tron钱包解读:TronLink,Ledger,Bitget钱包

电子钱包是用户连接到区块链网络的重要媒介。除了接收和发送功能外&#xff0c;它还可用于传输虚拟货币。它也是使用分散应用程序&#xff08;DApp&#xff09;的必要工具&#xff01;无论您是想在ON上使用以太坊&#xff0c;EOS还是任何DApp&#xff0c;您都必须先拥有钱包。因…