【零基础学java】(Map集合)

HashMap

键与值的形象解释

HashMap的特点

HashMap在查找时,只比较key,不比较value

是Map里面的一个实现类

没有额外需要学习的特有方法,直接使用Map里面的方法

特点都是由键决定的,无序,不重复,无索引

底层原理和HashSet一样,是哈希表结构

重写的解释

hashCode() 决定对象存储在哪个桶(数组位置)

equals() 决定在同一个桶中如何精确匹配

两者必须一致:相等的对象必须有相同的 hashCode

为了性能:好的 hashCode 应该尽量减少碰撞

这就是为什么在 Java 中有一句经典的话:

"重写 equals() 时一定要重写 hashCode(),这是一条必须遵守的约定!"ALT+insert

默认的 hashCode() 是 native 方法,为每个对象生成唯一值

即使内容相同,两个对象的 hashCode 也不同

导致 HashMap 认为这是两个不同的 key

LinkedHashMap

由键决定,有序,不重复,无索引

原理:底层数据结构依然是哈希表,只是每个键值对元素又额外的多了一个双链表的机制记录存储的顺序

TreeMap

TreeMap跟TreeSet底层原理是一样的,都是红黑树结构
由键决定特性:不重复,无索引,可排序
可排序:对键进行排序
注意:默认按照键的从小到大进行排序,也可以自己规定键的排序规则(自定义对象时,需要自己在javabean中指定规则)

代码书写两种排序规则

1.实现Comparable接口,指定比较规则

2.创建集合时传递Comparator比较器对象,指定比较规则

新的统计思想,利用map集合进行统计

如果题目如果没有要求对结果进行排序,默认使用HashMap

如果题目中要求对结果进行排序,请使用TreeMap

键:表示要统计的内容,调用集合中的方法,比对元素是否存在,若存在,则次数加一

值:表示要统计的次数

遍历集合并按照指定的格式进行拼接 StringBuild/StringJoiner

相关推荐
初次见面我叫泰隆几秒前
Qt——5、Qt系统相关
开发语言·qt·客户端开发
亓才孓5 分钟前
[Class的应用]获取类的信息
java·开发语言
开开心心就好13 分钟前
AI人声伴奏分离工具,离线提取伴奏K歌用
java·linux·开发语言·网络·人工智能·电脑·blender
Never_Satisfied17 分钟前
在JavaScript / HTML中,关于querySelectorAll方法
开发语言·javascript·html
80530单词突击赢26 分钟前
JavaWeb进阶:SpringBoot核心与Bean管理
java·spring boot·后端
3GPP仿真实验室41 分钟前
【Matlab源码】6G候选波形:OFDM-IM 增强仿真平台 DM、CI
开发语言·matlab·ci/cd
devmoon44 分钟前
在 Polkadot 上部署独立区块链Paseo 测试网实战部署指南
开发语言·安全·区块链·polkadot·erc-20·测试网·独立链
lili-felicity1 小时前
CANN流水线并行推理与资源调度优化
开发语言·人工智能
爬山算法1 小时前
Hibernate(87)如何在安全测试中使用Hibernate?
java·后端·hibernate
沐知全栈开发1 小时前
CSS3 边框:全面解析与实战技巧
开发语言