Map 双列集合语法详解
Map 双列集合语法详解一、双列集合的特点单列集合“服部平次”“黑羽快斗”“江户川柯南”双列集合**key****value**江户川柯南毛利兰黑羽快斗中森青子服部平次荷叶双列集合一次需要存一对数据,分别为键和值键不可以重复,值可以重复键和值是一一对应的,每一个键只能找到自己对应的值键 值 这个整体我们称之为键值对或者键值对对象,在Java中叫做Entry对象‍二、Map的常见APIMap是双列集合的顶层接口,它的功能是全部双列集合都可以继承使用的方法名称说明V put(K key,V value)添加元素V remove(Object key)根据键删除键值对元素void clear()移除所有的键值对元素boolean containsKey(Object key)判断集合是否包含指定的键boolean containsValue(Object value)判断集合是否包含指定的值boolean isEmpty()判断集合是否为空int size()集合的长度,也就是集合中键值对的个数publicclassMapDemo1{publicstaticvoidmain(String[]args){MapString,StringmnewHashMap();/** * 添加元素 * put方法的细节: * 在添加数据的时候,如果键不存在,那么直接把键值对对象添加到map集合当中,方法返回null * 在添加数据的时候,如果键是存在的,那么会把原有的键值对对象覆盖,会把覆盖的值进行返回 */Stringvalue1m.put(江户川柯南,毛利兰);System.out.println(value1);// nullm.put(黑羽快斗,中森青子);m.put(服部平次,荷叶);m.put(源源,甜甜);Stringvaluem.put(江户川柯南,灰原哀);System.out.println(value);// 毛利兰/** * 删除元素: * remove:根据键删除键值对,返回删除的值 * clear:清空集合 */Stringresultm.remove(服部平次);System.out.println(result);// 荷叶m.clear();/** * 判断是否包含: * containsKey:根据键判断元素是否存在 * containsValue:根据值判断元素是否存在 */booleankeyResultm.containsKey(源源);booleankeyResult1m.containsKey(源源6);System.out.println(keyResult);//trueSystem.out.println(keyResult1);//falsebooleankeyResult2m.containsValue(甜甜);System.out.println(keyResult2);//true/** * 判断是否为空 */m.clear();booleanresultm.isEmpty();System.out.println(result);// true/** * 获取集合的长度 * size */intsizem.size();System.out.println(size);System.out.println(m);}}‍三、Map的遍历方式键找值键值对Lambda表达式publicstaticvoidmain(String[]args){MapString,StringmapnewHashMap();map.put(江户川柯南,毛利兰);map.put(黑羽快斗,中森青子);map.put(服部平次,荷叶);map.put(源源,甜甜);// 1.键找值SetStringkeysmap.keySet();//------------------------------------------//增强forfor(Stringkey:keys){// 利用map集合中的键获取对应的值 getStringvaluemap.get(key);System.out.println(keyvalue);}//------------------------------------------//迭代器IteratorStringitkeys.iterator();while(it.hasNext()){Stringkeyit.next();Stringvaluemap.get(key);System.out.println(keyvalue);}//------------------------------------------//Lambda表达式keys.forEach(key-{Stringvaluemap.get(key);System.out.println(keyvalue);});//------------------------------------------//2.键值对//Set无序集合,不可重复SetMap.EntryString,Stringentriesmap.entrySet();for(Map.EntryString,Stringentry:entries){Stringkeyentry.getKey();Stringvalueentry.getValue();System.out.println(keyvalue);}IteratorMap.EntryString,Stringitentries.iterator();while(it.hasNext()){Map.EntryString,Stringnextit.next();Stringkeynext.getKey();Stringvaluenext.getValue();System.out.println(keyvalue);}entries.forEach(entry-{Stringkeyentry.getKey();Stringvalueentry.getValue();System.out.println(keyvalue);});//3.Lambda表达式map.forEach(newBiConsumerString,String(){Overridepublicvoidaccept(Stringkey,Stringvalue){System.out.println(keyvalue);}});map.forEach((key,value)-System.out.println(keyvalue));}‍四、HashMap1. HashMap的特点HashMap是Map里面的一个实现类没有额外需要学习的特有方法,直接使用Map里面的方法就可以了特点都是由键决定的 : 无序、不重复、无索引HashMap和HashSet底层原理是一模一样的,都是哈希表结构✏️ HashMapHashMap底层是哈希表结构的,插入键值对对象时,会用键计算哈希值,放入指定位置,与值无关依赖hashCode方法和equals方法保证键的唯一如果键存储的是自定义对象,需要重写hashCode和equals方法如果值存储自定义对象,不需要重写hashCode和equals方法publicclassStudent{privateStringname;privateIntegerage;publicStudent(){}publicStudent(Stringname,Integerage){this.namename;this.ageage;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.namename;}publicIntegergetAge(){returnage;}publicvoidsetAge(Integerage){this.ageage;}OverridepublicStringtoString(){returnStudent{namename\, ageage};}Overridepublicbooleanequals(Objecto){if(onull||getClass()!o.getClass())returnfalse;Studentstudent(Student)o;returnObjects.equals(name,student.name)Objects.equals(age,student.age);}OverridepublicinthashCode(){returnObjects.hash(name,age);}}publicclassHashMapDemo1{publicstaticvoidmain(String[]args){HashMapStudent,StringhmnewHashMap();Students1newStudent(源源,19);Students2newStudent(甜甜,18);Students3newStudent(柯南,17);hm.put(s1,安徽);hm.put(s2,浙江);hm.put(s3,上海);hm.put(s3,东京);// 遍历集合SetStudentstudentshm.keySet();students.forEach(s-{Stringvaluehm.get(s);System.out.println(svalue);});System.out.println(------------------------);SetMap.EntryStudent,Stringentrieshm.entrySet();entries.forEach(entry-{Studentkeyentry.getKey();Stringvalueentry.getValue();System.out.println(keyvalue);});System.out.println(--------------------------);hm.forEach((key,value)-System.out.println(keyvalue));}}‍五、LinkedHashMap1. LinkedHashMap的特点由键决定 : 有序、不重复、无索引这里的有序指的是保证存储和取出的元素顺序一致原理 : 底层数据结构是依然哈希表,只是每个键值对元素又额外多了一个双向链表的机制记录存储的顺序publicstaticvoidmain(String[]args){LinkedHashMapString,IntegerlhmnewLinkedHashMap();lhm.put(源源,1126);lhm.put(甜甜,0101);lhm.put(柯南,9568);lhm.put(灰原哀,2237);System.out.println(lhm);// {源源1126, 甜甜65, 柯南9568, 灰原哀2237} 顺序一致!!!}‍六、TreeMap1. TreeMap的特点 :TreeMap和TreeSet底层原理一样,都是红黑树结构的由键决定特性 : 不重复、无索引、可排序可排序 : 对键进行排序注意 : 默认按照键的从小到大进行排序,也可以自己规定键的排序规则‍2. 两种排序规则的书写实现Comparable接口,指定比较规则创建集合时传递Comparator比较器对象,指定比较规则 注意两中方式都书写的话,按照第二种Comparator比较器对象为准❗ 提醒Java中已经实现了Integer和Double类型的Comparable接口,默认按照升序排序的String类型按照字母在ASCII码表中对应的数字升序进行排列‍例子 :键 : 学生对象 值 : 所在城市 按照学生年龄升序排列,年龄一样按照姓名的字母排序,同姓名年龄视为同一个人publicclassStudentimplementsComparableStudent{privateStringname;privateIntegerage;publicStudent(){}publicStudent(Stringname,Integerage){this.namename;this.ageage;}publicIntegergetAge(){returnage;}publicvoidsetAge(Integerage){this.ageage;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.namename;}OverridepublicStringtoString(){returnStudent{namename\, ageage};}OverridepublicintcompareTo(Studento){intithis.getAge()-o.getAge();ii0?this.getName().compareTo(o.getName()):i;returni;}}publicclassTreeMapDemo1{publicstaticvoidmain(String[]args){TreeMapStudent,StringtmnewTreeMap();Students1newStudent(源源,19);Students2newStudent(甜甜,18);Students3newStudent(柯南,17);tm.put(s1,安徽);tm.put(s2,浙江);tm.put(s3,东京);System.out.println(tm);// {Student{name柯南, age17}东京, Student{name甜甜, age18}浙江, Student{name源源, age19}安徽}}}‍七、总结集合底层结构键特点使用场景HashMap哈希表无序、不重复大多数日常存储查询首选LinkedHashMap哈希表 双向链表存取有序、不重复需要保证存入顺序TreeMap红黑树按键排序、不重复需要对键自动排序‍Map 为什么键不能重复底层添加元素时先判断哈希值再 equals 比较相同则覆盖 value。‍为什么自定义对象做 key 必须重写 hashCode 和 equals‍Object 原生 hashCode 根据内存地址内容相同不同对象哈希值不一样会判定为两个 key。‍TreeMap 键对象如果不实现比较规则会报错ClassCastException

相关新闻

Java IO流·文件传输

Java IO流·文件传输

这里的IO框架是Java.io那一套流体系,聚焦两件事:1.IO流怎么分类、各自干什么2.怎么用字节流Socket做网络文件传输1.两个分类视角1.1按数据格式:字节流vs字符流类别抽象基类(输入/输出)单位典型场景字节流InputStream/O…

2026/8/4 20:17:01 阅读更多 →
Node.js原生fetch API实战指南:从node-fetch迁移到标准HTTP客户端

Node.js原生fetch API实战指南:从node-fetch迁移到标准HTTP客户端

1. 项目概述:从node-fetch到原生fetch的演进如果你是从几年前开始接触 Node.js 的,那么对node-fetch这个包一定不会陌生。在很长一段时间里,Node.js 的运行时环境里并没有内置一个像浏览器中那样方便、标准的fetchAPI。我们不得不通过npm ins…

2026/8/3 8:21:01 阅读更多 →
电力系统暂态稳定仿真程序123(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

电力系统暂态稳定仿真程序123(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码

电力系统暂态稳定仿真程序123(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码 1.matlab暂态稳定分析程序,三机九节点系统,发电机模型采用经典二阶模型,负荷用恒阻抗模型,用改进欧…

2026/8/3 8:21:01 阅读更多 →

最新新闻

BilibiliDown完整教程:轻松下载B站高清视频与无损音频

BilibiliDown完整教程:轻松下载B站高清视频与无损音频

BilibiliDown完整教程:轻松下载B站高清视频与无损音频 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/b…

2026/8/4 20:17:05 阅读更多 →
从实验室到产品:Inflect-Nano-v2的评估指标体系与真实场景验证

从实验室到产品:Inflect-Nano-v2的评估指标体系与真实场景验证

从实验室到产品:Inflect-Nano-v2的评估指标体系与真实场景验证 【免费下载链接】Inflect-Nano-v2 项目地址: https://ai.gitcode.com/hf_mirrors/owensong/Inflect-Nano-v2 Inflect-Nano-v2作为一款先进的TTS模型,其从实验室原型到产品化落地的过…

2026/8/4 20:17:05 阅读更多 →
如何免费实现专业级虚拟背景:OBS背景移除插件完整指南

如何免费实现专业级虚拟背景:OBS背景移除插件完整指南

如何免费实现专业级虚拟背景:OBS背景移除插件完整指南 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地址: https://…

2026/8/4 20:17:05 阅读更多 →
2024年最值得尝试的电商框架:Storecraft核心功能深度解析

2024年最值得尝试的电商框架:Storecraft核心功能深度解析

2024年最值得尝试的电商框架:Storecraft核心功能深度解析 【免费下载链接】storecraft ⭐ Rapidly build AI-powered, Headless e-commerce backends with TypeScript 项目地址: https://gitcode.com/gh_mirrors/st/storecraft Storecraft是2024年备受瞩目的…

2026/8/4 20:17:05 阅读更多 →
AI写作文不被扣分?(剑桥考官亲测的5大雷区与智能润色黄金公式)

AI写作文不被扣分?(剑桥考官亲测的5大雷区与智能润色黄金公式)

更多请点击: https://intelliparadigm.com 第一章:AI写作文不被扣分?(剑桥考官亲测的5大雷区与智能润色黄金公式) 剑桥大学英语考评部(Cambridge Assessment English)近年对127份AI辅助写作样…

2026/8/4 20:17:05 阅读更多 →
iOS激活锁绕过神器:applera1n帮你5分钟解锁旧款iPhone

iOS激活锁绕过神器:applera1n帮你5分钟解锁旧款iPhone

iOS激活锁绕过神器:applera1n帮你5分钟解锁旧款iPhone 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否曾经面对着一台被激活锁困住的iPhone,感到束手无策?无论…

2026/8/4 20:16:05 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →