集合详解之(五)Map集合

news2024/9/30 11:36:43

文章目录

  • 🐒个人主页
  • 🏅JavaSE系列专栏
    • 📖前言:
    • 🎀Map集合的介绍
    • 🪅如何保证键的不重复性?(equals()与hashCode()方法的联用)
    • 🎀HashMap集合及常用方法
    • 🎀Map.entrySet()集合及常用方法
    • 🎀HashTable集合
    • 🎀TreeMap集合及常用方法

🐒个人主页

🏅JavaSE系列专栏

📖前言:

本篇博客主要以介绍Map集合接口的实现类HashMap、HashTable、TreeMap的常用方法

🎀Map集合的介绍

Map集合是 键值对 -双列集合,它的雏形是离散数学中的二元有序对<k,v>,它是一种映射关系,其中的键列抽离出来就是一个Set集合,所以键·是不能重复的,但是值可以重复。

🪅如何保证键的不重复性?(equals()与hashCode()方法的联用)

🎯 equals() 的使用:(通常指内容是否相等,去重时常常可以与重写hashCode()连用,用来更高效地比较对象内容是否相等)

🍅如果没有自己的equals()方法,默认调用Object类中的equals()方法。而Object类中的equals()方法等价于 ==作用,故想要比较对象里内容是否相等时需要重写Object类中的equals()方法。

【注】Object类中的hashCode()方法拿到的也是内存地址

🍅如果已经重写过了Object类中的equals()方法,需注意:重写equals()是对象里一个一个内容来比较的,虽然安全性高,但效率低;而重写hashCode()是把对象所有内容计算出一个(int类型)哈希值直接进行数值比较,虽然高效,但有安全隐患(可能不同内容的对象两个计算出来的哈希值相同–《Hash冲突》eg:“通话”~“重地”)。

🎯所以去重时可以先判断对象内容计算出的哈希值是否相等,如果哈希值相等,再调用重写equals()进行最后的检验

HashMap的存储底层源码超详解

🎀HashMap集合及常用方法

HashMap集合存放数据-键值对<k,v>和HashSet存放元素一样是无序的(即不按照插入顺序排序),它是按照键的hash值来排序的。通过键可以找到值。

构造方法方法内容介绍
HashMap()📖【构造一个空的 HashMap ,默认初始容量为 16 和默认负载系数 0.75 (当然,这两个属性也可以自定义)】
HashMap(Map集合 m)📖【可以将Map集合m或Map集合的实现类m进行转化为HashMap集合】
常用方法 方法内容介绍
int size()📖【返回Map集合键值对数量】
boolean isEmpty()📖【判断Map集合是否为空】
void clear()📖【清空集合】
boolean containsKey(Object key)📖【集合中键是否包含key,返回布尔值】
boolean containsValue(Object value)📖【集合中值是否包含value,返回布尔值】
Set<Map.Entry<K,V>> entrySet()📖【返回一个entrySet集合,利用增强for循环来实现对<k,v>进行操作】
void forEach(lambda表达式)📖【对Map集合的k,v进行遍历操作】
以下为forEach(lambda表达式)的展示实例在这里插入图片描述
V get(Object key)📖【通过键key获取Map集合中对应的值】
Set keySet()📖【把Map集合中的键列变为Set单列集合】
Collection values()📖【把Map集合中的值列变为单列集合】
V put(K key, V value)📖【向Map集合中添加<k,v>元素】
void putAll(Map集合 m)📖【把另外一个Map集合m或Map集合的实现类m里所有<k,v>元素添加到自身Map集合中】
V remove(Object key)📖【删除Map集合中对应键key的<k,v>键值对】
boolean remove(Object key, Object value)📖【删除Map集合中的对应键值对<k,v>,返回一个布尔值】
boolean replace(K key, V oldValue, V newValue)📖【修改Map集合中的对应键值对<k,v>为<k,v1>,返回一个布尔值】

🎀Map.entrySet()集合及常用方法

构造方法方法内容介绍
Set<Map.Entry<K,V>> Map对象.entrySet()📖【将map对象转化为entey对象】
entry对象支持用增强for循环在这里插入图片描述
entry对象支持用迭代器在这里插入图片描述
常用方法 方法内容介绍
K getKey()📖【在遍历中获取键】
V getValue()📖【在遍历中获取值】
V setValue(V value)📖【在遍历中修改值】

🎀HashTable集合

Hashtable就相当于synchronized 线程安全的HashMap,可以类比“String与StringBuffer”、“ArrayList与Vector”之间的关系,但是需要注意的是,Hashtable中存储的键不能为null,而HashMap中的键可以存储null
,所以这里就不单独介绍方法啦🐒

🎀TreeMap集合及常用方法

构造方法方法内容介绍
TreeMap()📖【空集合·自然排序】
TreeMap(Comparator<? super K> comparator)📖【利用Lambda表达式实现自定义排序·】
构造方法-lambda自定义排序 --实例在这里插入图片描述
TreeMap(Map<? extends K,? extends V> m)📖【构造方法:继承排序规则,继承元素】
构造方法(Map集合)继承排序规则、集合元素 --实例在这里插入图片描述
常用方法 方法内容介绍
void clear()📖【清空集合】
boolean containsKey(Object key)📖【是否包含键key】
boolean containsValue(Object value)📖【是否包含值Value】
K ceilingKey(K key)📖【返回此集合中>=key的最小键,如果没有此元素,则返回 null 】
Map.Entry<K,V> ceilingEntry(K key)📖【返回此集合中>=key的最键值对,如果没有此元素,则返回 null 】
K higherKey(K key)📖【返回此集合中>key的最小键,如果没有此元素,则返回 null 】
Map.Entry<K,V> higherEntry(K key)📖【返回此集合中>key的最小键值对,如果没有此元素,则返回 null 】
Map.Entry<K,V> floorEntry(K key)📖【返回(最后一个元素)最大键值对】
Set<Map.Entry<K,V>> entrySet()📖【将map对象转化为entey对象】
Map.Entry<K,V> firstEntry()📖【返回(最后一个元素)最大键值对】
K firstKey()📖【返回(第一个元素)最小键】
Map.Entry<K,V> lastEntry()📖【返回(最后一个元素)最大键值对】
K floorKey(K key)📖【返回(最后一个元素)最大键】
void forEach(lambda表达式)📖【对Map集合的k,v进行遍历操作】
以下为forEach(lambda表达式)的展示实例在这里插入图片描述
V get(Object key)📖【通过键key获取Map集合中对应的值】
SortedMap<K,V> headMap(K toKey)📖【返回一个严格小于<toKey的部分键值对–Map集合】
headMap(K toKey)方法实例在这里插入图片描述
Set keySet()📖【把Map集合中的键列变为Set单列集合】
Map.Entry<K,V> lastEntry()📖【最后一个键值对】
V put(K key, V value)📖【加入键值对】
void putAll(Map集合 m)📖【把另外一个Map集合m或Map集合的实现类m里所有<k,v>元素添加到自身Map集合中】
V remove(Object key)📖【删除Map集合中对应键key的<k,v>键值对】
boolean replace(K key, V oldValue, V newValue)📖【修改Map集合中的对应键值对<k,v>为<k,v1>,返回一个布尔值】
int size()📖【集合大小】
Collection values()📖【把Map集合中的值列变为单列集合】

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

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

相关文章

电能计量自动化系统在用电管理上的应用

【摘要】&#xff1a;电能计量自动化系统在用电管理上的应用&#xff0c;不仅能够实现远程自动抄表&#xff0c;减少企业在人力资源成本上的投入&#xff0c;切实地维护企业的核心利益&#xff0c;创造出更多的经济效益。还能够通过装置在线监测与配网防窥电功能实现对电能计量…

D. Tokitsukaze, CSL and Stone Game(博弈)

Problem - D - Codeforces 时津风和CSL正在玩一个石头的小游戏。 一开始&#xff0c;有n个石子堆&#xff0c;其中第ii堆有aiai石子。两位玩家轮流走棋。时津风先走。每一回合&#xff0c;棋手选择一个非空的棋堆&#xff0c;并从该棋堆中准确地取出一块石头。如果在轮到他之前…

2 路 500MSPS/1GSPS/1.25GSPS 14 位直流耦合 AD 采集 FMC 子卡模块

板卡概述 FMC155 是一款基于 VITA57.1 标准的&#xff0c;实现 2 路 14-bit、 500MSPS/1GSPS/1.25GSPS 直流耦合 ADC 同步采集 FMC 子卡模 块。该模块遵循 VITA57.1 规范&#xff0c;可直接与 FPGA 载卡配合使用&#xff0c;板 卡 ADC 器件采用 ADI 的 AD9680 芯片&#xf…

Python每日一练(20230420)

目录 1. 数组逐位判断 &#x1f31f; 2. 交错字符串 &#x1f31f;&#x1f31f; 3. 二进制求和 &#x1f31f; 4. 四舍六入五成双规则 &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 J…

12、HOOK原理下

一、去符号和恢复符号 1.1 Stip和 Strip Type解释 strip在iOS中的作用是 剥掉目标文件中一些符号信息和调试信息&#xff0c;使文件变小。dead code strip &#xff1a; 死代码剥离、然后再去链接。那么strip在哪些地方不能起作用呢&#xff1f; 动态库 不能strip全局符号、因…

Windows下使用SSH密钥实现免密登陆Linux服务器

工具&#xff1a; win10、WinSCP 生成ssh密钥&#xff1a; 打开终端&#xff0c;使账号密码登录&#xff0c;输入命令 ssh-keygen -t rsa 会提示密钥存放路径&#xff0c;一般存放在默认路径&#xff0c;直接回车即可&#xff0c;中间会提示输入密码&#xff0c;这里需要注…

工作流自动化和RPA自动化,哪个更适合你?

2018年&#xff0c;一款名为《Overcooked!2》&#xff08;又名“胡闹厨房”、“分手厨房”&#xff09;的多人合作模拟类游戏风靡全球&#xff0c;在游戏中&#xff0c;玩家扮演厨师在充满各种障碍和危险的厨房里准备食材、烹饪、上菜和清理&#xff0c;需要在尽可能短的时间内…

window11开启wsl2

前言 以前玩linux&#xff0c;总是习惯装双系统&#xff0c;其实双系统特别麻烦。wsl现在的功能其实挺强大的&#xff0c;完全可以代替双系统&#xff0c;去完成一些在linux上的环境搭建。这篇文章记录下window11如何开启wsl2功能&#xff0c;并且安装ubuntu系统。 开启wsl2功…

2023自助洗车店系统解决方案共享洗车无人洗车风口

2021年中国汽车保有量预计超6.3亿辆,洗车市场需求巨大,传统洗车投资大、费用贵、成本高耗水大、占地面积大,而自助洗车机占据传统洗车耗水量1/4 ,占地面积1/70 ;节能环保得到政府的大力支持,且结合信息物联技术,实现智能化管理,高效能运营,灵活便捷服务,符合智慧城市发展原则,成…

开放式耳机有什么好处,列举几款性能高的开放式蓝牙耳机

骨传导耳机也称为“不入耳式”耳机&#xff0c;是一种通过颅骨、骨迷路、内耳淋巴液和听神经之间的信号传导&#xff0c;来达到听力保护目的的一种技术。由于它可以开放双耳&#xff0c;所以在跑步、骑行等运动时使用十分安全&#xff0c;可以避免外界的干扰。这种耳机在佩戴时…

AAAI 2023 | 基于Conductance的高效率和高质量的图聚类算法

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; ╱ 作者简介╱ 林隆龙 博士、副教授 目前任职于西南大学计算机与信息科学学院 软件学院。2022年6月于华中科技大学计算机科学与技术学院获博士学位。目前主要研究兴趣包括(时序)社区挖掘、局部聚类、Personaliz…

Altium Designer 20 导出 Gerber 制造文件流程及注意事项

一、导出 Gerber 流程 设置原点&#xff1a;在Edit菜单中选择Origin&#xff0d;Set &#xff08;快捷键E-O-S&#xff09;定好原点&#xff0c;一般放在左下角附近即可。 放置分孔图表&#xff1a;在Place菜单中选择String放置“.Legend”&#xff08;快捷键P-S&#xff09;…

C++多线程编程(一) thread类初窥

多线程编程使我们的程序能够同时执行多项任务。 在C11以前&#xff0c;C没有标准的多线程库&#xff0c;只能使用C语言中的pthread&#xff0c;在C11之后&#xff0c;C标准库中增加了thread类用于多线程编程。thread类其实是对pthread的封装&#xff0c;不过更加好用&#xff…

ThreadLocal的相关面试题

ThreadLocal的特点&#xff1a;实现线程间的资源隔离&#xff0c;实现线程内的资源共享 2.原理是&#xff0c;每个线程都有一个ThreadLocalMap类型的成员变量&#xff0c;用来储存资源对象 1.调用set方法&#xff0c;就是以ThreadLocal自己作为key&#xff0c;资源对象作为val…

《花雕学AI》比尔・盖茨:AI 和 ChatGPT 可以改善人类生活,但也要防止滥用和危害

3月21号&#xff0c;微软创始人比尔盖茨&#xff0c;发表最新AI文章《人工智能时代已经开始——人工智能与手机、互联网一样具有革命性》&#xff0c;文章中表示&#xff1a;「自1980年首次看到图形用户界面&#xff08;graphical user interface&#xff09;以来&#xff0c;O…

通过logstash实现mysql与es的双向数据同步

参考题目 一种基于MySQL和Elasticsearch的数据同步方法及系统基于MySQL和Elasticsearch的数据同步方法一种基于MySQL和Elasticsearch的数据同步系统基于MySQL和Elasticsearch的数据同步技术 目录 1【理论调研】 方案1&#xff1a;使用Logstash实现数据同步 方案2&#xff1a…

Spring MVC基本认识与操作

SpringMVC是隶属于Spring框架的一部分&#xff0c;主要是用来进行Web开发&#xff0c;是对Servlet进行了封装。 先来介绍三个概念&#xff1a; SpringMVC是处于Web层的框架&#xff0c;所以其主要的作用就是用来接收前端发过来的请求和数据然后经过处理并将处理的结果响应给前…

SpringCloud 微服务系列——【基础与服务注册中心详解】

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

文本批量翻译-批量翻译文件名

批量将英文翻译成中文的软件 批量将英文翻译成中文的软件的主要用途场景主要是在需要大量翻译英文文本到中文的场景下使用&#xff0c;例如&#xff1a; 商务文件翻译&#xff1a;许多企业需要将其商务文件&#xff0c;如合同、报告、信函等翻译成中文&#xff0c;以便其中文读…

HTML5 <p> 标签、HTML5 <pre> 标签

HTML5 <p> 标签 实例 HTML5 <p>标签用于定义一个段落。请参考下述示例&#xff1a; 以下代码标记了一个段落&#xff1a; <p>这是一个段落。</p>尝试一下 (在页面下部&#xff0c;您可以找到更多实例) 浏览器支持 目前大多数浏览器支持 <p>标…