JavaSE进阶(九)——Map
2021/12/4 14:17:12
本文主要是介绍JavaSE进阶(九)——Map,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JavaSE进阶(九)——Map
前言
Map的基本结构有两个组成,一个是key,一个是value;这两个代表一个整体元素,key就是唯一标识这个元素的。同时Map的内部组成是无序的,它在插入的时候要经过Hash算法做取余操作。
本篇笔记较为复杂,所以大家谨慎观看,多看几遍。
文章目录
- JavaSE进阶(九)——Map
- 前言
- Map
- HashMap
- 注意
- HashTable
- 总结
Map
前言中有过描述,<key,value>这种结构叫做键值对,官方描述:将键映射到值的对象,且一个映射不能包含重复的键;每个键最多只能映射到一个值(多个键映射一个值是允许的)。
说到这大家有没有回忆起什么?函数映射。就是这个道理。另外记住一句话:所有计算机的问题都可以使用数学思想来解释。
HashMap
HashMap中我们可以将key和value设置为null;
至于如何使用我不想说了,大家都写。我写点不一样的。
默认HashMap 长度为16,负载因子为0.75;上一篇笔记中已经记录了扩容的公式,现在来说一些根据什么来确定位置。
我们已经知道了每个对象都有一个HashCode且唯一标识,我们通过HashCode与16取余,计算出一个下标,然后将当前元素放在对应的下标下。那么HashCode的计算方式如何呢?
public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i < value.length; i++) { h = 31 * h + val[i]; } hash = h; } return h; }
大家看不懂没关系,不需要大家看懂,只需要知道我们的HashCode是更具对象中的属性值以及其他数据计算出来的数值。
注意
在此提醒各位同学去看我另一篇笔记,面试会考,如果你能将那篇博客中的逻辑理解,那么这道题在面试中不会难住你了。
HashMap在JDK1.8发生的变化
HashTable
面试中可能会问到HashTable,这玩意已经被淘汰了,它是HashMap的前身,主要特点如下:
- 初始长度11;
- 线程安全;
- 不允许空值;
- 作为key的类必须实现equals和HashCode方法;
【注】:毕业后,如果还有公司面试问这个……,呵呵,你懂的。
总结
Map的使用就那么一点玩意,真的是懒得说,至于它的底层我会在数据结构专栏中进行详细说明,两周后开始更新。
这篇关于JavaSE进阶(九)——Map的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API