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","…

软考 系统分析师系列知识点之范围管理(3)

接前一篇文章&#xff1a;软考 系统分析师系列知识点之范围管理&#xff08;2&#xff09; 所属章节&#xff1a; 第20章. 项目管理 第2节. 范围管理 20.2.3 范围确认和控制 在对项目范围进行了定义、编制了详细的WBS之后&#xff0c;接下来的事情就是要让项目干系人确认范围…

计算机毕业设计 | 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&…

【LUA】转载github自用二改模版——调节音量、显示七日天气、历史剪贴板、系统信息显示

二改模版笔记 自动重新加载HS function reloadConfig(files)doReload falsefor _,file in pairs(files) doif file:sub(-4) ".lua" thendoReload trueendendif doReload thenhs.reload()end end myWatcher hs.pathwatcher.new(os.getenv("HOME") .. &…

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

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

Jetson JetPack6.0 DP L4T 36.2

JetPack 6是有史以来最大的升级。 它不仅带来了更新的内核和更新的Ubuntu根文件系统&#xff0c;而且还包括以前从未在Jetson上提供的新功能。J etPack 6首次提供了运行任何Linux内核的灵活性&#xff0c;并提供了Jetson生态系统合作伙伴基于Linux的发行版的更广泛选择。 阅…

读取appsettings.json属性

1、定义对应读取类ReadConfig. 2、对应类中函数 private static IConfigurationRoot builder; static ConfigHelper() { builder new ConfigurationBuilder() .AddInMemoryCollection() .Set…

最后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;取消…

导出excel功能,前端的解决方案

import { utils, writeFileXLSX } from xlsx // 导出excel async exportToExcel() {// 获取要导出的业务数据&#xff08;这里的接口自己改成实际使用的接口&#xff09;const res await getRuleListAPI(this.params)// 表头英文字段key&#xff08;这里的数据改成接口返回的实…