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("喜羊羊");*//* //clearmap.clear();*//* //containKeySystem.out.println(map.containsKey("喜羊羊"));//containsValueSystem.out.println(map.containsValue("熊二"));*//*   //is EmptySystem.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>() {@Overridepublic 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


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

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

相关文章

数据结构----链表介绍、模拟实现链表、链表的使用

文章目录 1. ArrayList存在的问题2. 链表定义2.1 链表的概念及结构2.2 链表的组合类型 3. 链表的实现3.1 单向、不带头、非循环链表的实现3.2 双向、不带头节点、非循环链表的实现 4.LinkedList的使用4.1 什么是LinkedList4.2 LinkedList的使用4.2.1. LinkedList的构造4.2.2. L…

第 6 章:Linux中使用时钟、计时器和信号

在本章中&#xff0c;我们将开始探索Linux环境中可用的各种计时器。随后&#xff0c;我们将深入了解时钟的重要性&#xff0c;并探讨UNIX时间的概念。接下来&#xff0c;我们将揭示在Linux中使用POSIX准确测量时间间隔的方法。之后&#xff0c;我们将进入std::chrono的领域&…

数据结构与算法-二叉树-二叉树的所有路径

二叉树的所有路径 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [1,2,3,null,5] 输出&#xff1a;["1->2->5","…

计算机毕业设计 | vue+springboot 超市账单管理系统(附源码)

1&#xff0c;绪论 1.1 开发背景 世界上第一个购物中心诞生于美国纽约&#xff0c;外国人迈克尔库伦开设了第一家合作商店&#xff0c;为了更好地吸引大量客流量&#xff0c;迈克尔库伦精心设计了低价策略&#xff0c;通过大量进货把商品价格压低&#xff0c;通过商店一次性集…

HCIA---OSPF实验

题目&#xff1a; 一:IP规划及配置 IP规划没有要求&#xff0c;所以我们可以去任意规划&#xff0c;只要每个网段不要重复就好 规划的IP 配置IP 先在每个ABR设备上配置环回和接口IP&#xff0c;然后每台设备上使用display ip interface brief都查看一下 R1&#xff1a; R3&…

测试ASP.NET Core项目调用EasyCaching的基本用法(InMemory)

EasyCaching属于开源缓存库&#xff0c;支持基本缓存方式及高级缓存用法&#xff0c;提高用户操作缓存的效率。EasyCaching支持的缓存方式包括以下类型&#xff0c;本文学习最基础的InMemory方式的基本用法。   EasyCaching.InMemory包属于基于内存的缓存库&#xff0c;使用的…

最后50个CC龙年红包封面,免费速领!还有更多......高中生也卷起Steam来了

微信视频号之前是送了我3张新年红包封面&#xff0c;一共是150个&#xff0c;但不太会操作浪费了100个&#xff0c;只能我自己用来送老铁了。 晓衡又做了一条 Cocos 小可爱 CC 封面红包&#xff0c;特别适合送女生或给小朋友们&#xff0c;点击视频领取&#xff01;还好微信又送…

Docker 搭建MySQL主从复制-读写分离

一. 介绍 MySQL主从复制是一种常用的数据库高可用性解决方案&#xff0c;通过在主数据库上记录的数据变更&#xff0c;同步到一个或多个从数据库&#xff0c;实现数据的冗余备份和读写分离。在Docker环境下搭建MySQL主从复制和读写分离&#xff0c;不仅方便管理&#xff0c;还…

管理类联考-复试-英语口试

文章目录 主要内容注意事项常用短语常见话题模版在职生模板一在职生模板二 模板Sample lSample 2Sample 3Sample 4Sample 5Sample 6Sample 7Sample 8-简介版自我介绍 主要内容 1、简单问候 向老师们致以简单的问候&#xff0c;调整状态。 2、个人信息 姓名、年龄、毕业院校、…

为什么要用云手机养tiktok账号

在拓展海外电商市场的过程中&#xff0c;许多用户选择采用tiktok短视频平台引流的策略&#xff0c;以提升在电商平台上的流量&#xff0c;吸引更多消费者。而要进行tiktok引流&#xff0c;养号是必不可少的一个环节。tiktok云手机成为实现国内跨境养号的一种有效方式&#xff0…

【Docker】WSL(Windows Subsystem for Linux)常见命令解释说明以及简单使用

欢迎来到《小5讲堂》&#xff0c;大家好&#xff0c;我是全栈小5。 这是《Docker容器》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对…

【Spring实战】32 Spring Boot3 集成 Nacos 服务注册中心 并在 Gateway 网关中应用

文章目录 1. 定义2. 背景3. 功能和特性4. 下载安装5. 服务启动6. 使用示例1&#xff09;服务提供者2&#xff09;服务消费者3&#xff09;测试 7. 代码参考结语 1. 定义 Nacos 是 Dynamic Naming and Configuration Service 的首字母简称&#xff0c;一个更易于构建云原生应用…

Git怎样用?(下载到本地,和在本地初始化)

全局设置&#xff1a; 点击第二个 输入&#xff1a; 例如&#xff1b;邮箱是随意地 git config --global user.name "名字" git config --global user.email "邮箱" 获取git仓库 本地初始化&#xff1a; 创建仓库 右键第二个 输入 git init 克隆&#…

prism 10 for Mac v10.1.1.270激活版 医学绘图分析软件

GraphPad Prism 10 for Mac是一款专为科研工作者和数据分析师设计的绘图和数据可视化软件。以下是该软件的一些主要功能&#xff1a; 软件下载&#xff1a;prism 10 for Mac v10.1.1.270激活版 数据整理和导入&#xff1a;GraphPad Prism 10支持从多种数据源导入数据&#xff0…

HarmonyOS模拟器启动失败,电脑蓝屏解决办法

1、在Tool->Device Manager管理界面中&#xff0c;通过Wipe User Data清理模拟器用户数据&#xff0c;然后重启模拟器&#xff1b;如果该方法无效&#xff0c;需要Delete删除已创建的Local Emulater。 2、在Tool->SDK Manager管理界面的PlatForm选项卡中&#xff0c;取消…

Bitbucket第一次代码仓库创建/提交/创建新分支/合并分支/忽略ignore

1. 首先要在bitbucket上创建一个项目&#xff0c;这个我没有权限创建&#xff0c;是找的管理员创建的。 管理员创建之后&#xff0c;这个项目给了我权限&#xff0c;我就可以创建我的代码仓库了。 2. 点击这个Projects下的具体项目名字&#xff0c;就会进入这样一个页面&#…

选矿二厂电气系统维管工作项目招标公告

选矿二厂电气系统维管工作项目招标公告 (招标编号&#xff1a;JDCRY-ZB2024-05) 项目所在地区&#xff1a;河南省,洛阳市,汝阳县 一、招标条件 本选矿二厂电气系统维管工作项目已由项目审批/核准/备案机关批准&#xff0c;项目资金来源为自筹资金438万元&#xff0c;招标人…

[GN] 设计模式—— 创建型模式

文章目录 创建型模式单例模式 -- 确保对象唯一性饿汉式懒汉式优缺点使用场景 简单工厂模式例子&#xff1a;优化优缺点适用场景 工厂方法模式--多态工厂的实现例子优缺点适用场景 创建型模式 单例模式 – 确保对象唯一性 用TaskManager类。通过以下三步进行重构 为了确保Ta…

[足式机器人]Part3 机构运动学与动力学分析与建模 Ch01-2 完整定常系统——杆组RRR

本文仅供学习使用,总结很多本现有讲述运动学或动力学书籍后的总结,从矢量的角度进行分析,方法比较传统,但更易理解,并且现有的看似抽象方法,两者本质上并无不同。 2024年底本人学位论文发表后方可摘抄 若有帮助请引用 本文参考: 《空间机构的分析与综合(上册)》-张启先…

redis-4 集群

应用场景 为什么需要redis集群&#xff1f; 当主备复制场景&#xff0c;无法满足主机的单点故障时&#xff0c;需要引入集群配置。 一般数据库要处理的读请求远大于写请求 &#xff0c;针对这种情况&#xff0c;我们优化数据库可以采用读写分离的策略。我们可以部 署一台主服…