HashMap浅析

[机器学习入门] 李宏毅机器学习笔记-1(Learning Map 课程导览图) 自1956年提出人工智能的概念,其一方面被认为是人类文明未来的发展方向,另一方面也被认为是难以企及的梦想。然而过去几年,随着GPU并行计算性能的强大和海量数据的收集,人工智能取得了爆发性增长。而增长的功臣便是机器学习,特别是机器学习中的深度学习。现在我将系统学习《李宏毅机器学习这门课》,并整理笔记,供学习讨论。 阅读详情

这里是修真院后端小课堂,每篇分享文从

八个方面深度解析后端知识/技能,本篇分享的是:

【HashMap浅析。】

大家好,我是IT修真院郑州分院第十期的学员,一枚正直纯洁善良的java程序员

今天给大家分享一下,修真院官网java任务十,深度思考中的知识点——HashMap浅析。

背景介绍
Map集合即K-V集合,加上一个hash,这样是散列、无序的。HashMap简单理解就是散列、无序的K-V集合,接下来深入解析一下HashMap。

知识剖析
HashMap的数据结构

数组的优缺点:通过下标索引方便查找,但是在数组中插入或删除一个元素比较困难。

链表的优缺点:由于在链表中查找一个元素需要以遍历链表的方式去查找,而插入,删除快速。因此链表适合快速插入和删除的场景,不利于查找。

HashMap的底层是哈希数组,数组元素为Entry。HashMap通过key的hashCode来计算hash值,当hashCode相同时,通过“拉链法”解决冲突。

HashMap 的实例有两个参数影响其性能:“初始容量” 和 “加载因子”。容量 是哈希表中桶的数量,初始容量 只是哈希表在创建时的容量。加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要重建该哈希表内部数据结构,从而哈希表将具有大约两倍的桶数。

通常,默认加载因子是 0.75, 这是在时间和空间成本上寻求一种折衷。加载因子过高虽然减少了空间开销,但同时也增加了查询成本(在大多数 HashMap 类的操作中,包括 get 和 put 操作,都反映了这一点)。在设置初始容量时应该考虑到映射中所需的条目数及其加载因子,以便最大限度地减少重构操作次数。如果初始容量大于最大条目数除以加载因子,则不会发生重构操作。

常见问题
为什么HashMap的数组长度一定是2的次幂?

扩展思考
Jdk1.7和1.8中hashMap的区别

数据结构引入了红黑树,解决链表过长时增删改查效率过低的问题;

扩容后存储位置的计算不同,jdk1.7在扩容后,key需要按照原来的方法重新计算一次。1.8里,直接原位置或者原位置+扩容量;

插入数据的方法也不同,1.7使用的是头插法,1.8使用尾插法。

参考文献
https://blog.youkuaiyun.com/soga613/article/details/78958642

https://blog.youkuaiyun.com/liyantianmin/article/details/79401854

https://www.cnblogs.com/chengxiao/p/6059914.html

更多讨论
Q1:hashmap 超过默认长度扩容时,是重新创建hashmap(包括定义长度)然后将原来的内容复制过来,然后销毁原来的hashmap?

A1:对,因为数组这种数据结构只能重新申请内存空间,无法直接扩容。

Q2:HashMap什么时候进行扩容?

A2:根据负载因子计算,当前使用的的容量大于负载因子和最大容量的乘积时,进行扩容。

Q3:随着数据量的增加,hashMap的查询时间复杂度?

A3:数组时是O(1),链表时是O(log n),链表长度超过8个变为红黑树,是O(n)。

【保研经验】北科自动化到北大工学院 作者:办公室某学长 谢邀。。。作为拖延症晚期患者,希望能在我科开学前写完。 先简单介绍一下我的保研过程,申请了清华叉院&北大叉院大数据&北大信科计算机夏令营,三者都没入营;申请了自所夏令营(自所来宣讲时未交简历,这是重大错误),给了第二批补录但没去;最终九推去了北大工学院。我的这次保研最终成功的经历可以说有一定运气成分,不具有普适性,但在前期准备过程中还是有经验可以分享的。 ... 阅读详情

相关推荐

Ubuntu下全面解析硬盘健康:从基础检测到性能优化

本文详细介绍了在Ubuntu系统中如何全面监测硬盘健康状态。从安装smartmontools工具、解读SMART关键属性(如重新分配扇区计数、通电时间),到进行性能基准测试(使用dd和fio),最后根据检测结果提供针对性的优化与预警方案,帮助用户有效预防数据丢失并提升硬盘可靠性。

weixin_29223603的博客 287

Learning Map

//李宏毅视频官网:http://speech.ee.ntu.edu.tw/~tlkagk/courses.html                                                    点击此处返回总目录 //邱锡鹏《神经网络与深度学习》官网:https://nndl.github.io     --------------...

liupc的学习笔记 814

【TiktokAPI】Tiktok直播API与实时互动功能开发完全指南

Tiktok直播API允许开发者创建、管理直播,并实现各种互动功能。/*** 获取Tiktok直播API访问令牌* @param {string} client_id - 应用ID* @param {string} client_secret - 应用密钥* @param {string} code - 授权码* @param {string} redirect_uri - 重定向URI* @returns {Promise<object>} 访问令牌响应*/try {}),

Mageia的专栏 3197

深度学习系列之 mAP

mAP:mean Averge Precision,作为object detection中衡量检测精度的指标。 在目标检测中,每一类都可以根据recall和precision绘制P-R曲线,AP就是该曲线下的面积。而mAP就是所有类AP的平均值。 Recall:召回率 召回率也叫查全率,是你预测的样本中实际的正样本数 / 所有的正样本数,所以为了提高召回率,可以多预测。 eg:有1...

LeeWanzhi的博客 9744

遗传算法详解 附python代码实现

遗传算法 遗传算法是用于解决最优化问题的一种搜索算法。从名字来看,遗传算法借用了生物学里达尔文的进化理论:”适者生存,不适者淘汰“,将该理论以算法的形式表现出来就是遗传算法的过程。 问题引入 上面提到遗传算法是用来解决最优化问题的,下面我将以求二元函数: def F(x, y): return 3*(1-x)**2*np.exp(-(x**2)-(y+1)**2)- 10*(x/5 - x**3......

ha_ha_ha233的博客 22万+

px3 有感分析

px3 后续分析

qq_39707917的博客 3116

hashMap底层源码浅析

hashmap是我们经常使用的一个工具类。那么知道它的一些原理和特性吗? 特性 HashMap是一种基于散列算法实现的快速查找的键值对结构。底层实现是链表数组。 允许空键和空值(但空键只有一个,且放在第一位) 元素是无序的(这里的无序是指的插入和读取的顺序不一致) JDK 8 后又加了底层加上了红黑树优化过长的链表以及并行遍历。 概述 HashMap可以分析的地方很多,网上也有许多文章,本文仅从以下几个方面进行分析: 基础变量 插入(动态扩容,延迟插入,红黑树转换,可以说的地方很多) 并行遍历(jdk

qq_35824590的博客 1万+

wsl2上运行带有Isaac Gym的程序报错: GPU Pipeline: disabled

显示GPU Pipeline:disabled,查找相关文档发现是WSL2目前不支持Isaac Gym,时,想要在wsl2上运行,最后报错如下。

2303_78660611的博客 957

hashMap底层源码浅析转载

hashmap是我们经常使用的一个工具类。那么知道它的一些原理和特性吗? 特性 HashMap是一种基于散列算法实现的快速查找的键值对结构。底层实现是链表数组。 允许空键和空值(但空键只有一个,且放在第一位) 元素是无序的(这里的无序是指的插入和读取的顺序不一致) JDK 8 后又加了底层加上了红黑树优化过长的链表以及并行遍历。 概述 HashMap可以分析的地方很多,网上也有许多文章,本文仅从以下几个方面进行分析: 基础变量 插入(动态扩容,延迟插入,红黑树转换,可以说的地方很多) 并行

钟长森的博客 264

ICG cell如何通过Latch结构消除与门clock gating中的glitch?

本文深入解析了ICG Cell如何利用Latch结构解决传统与门时钟门控中的毛刺问题。通过将电平敏感锁存器与门控与门结合,ICG Cell将使能信号的变化严格限制在时钟低电平的安全窗口内采样和锁存,从而在时钟有效沿期间提供稳定的控制信号,从根本上消除了因信号延迟不同步而产生的glitch,确保了门控时钟的纯净与电路功能的可靠性。

weixin_29234423的博客 468

基于simulink的电气弹簧ES稳压控制模型仿真

若要补偿母线电压的谐波,需控制ES上的谐波,即在单闭环母线电压有效值控制的基础上,增加谐波抑制环节来进行谐波控制,现有的各种检测和抑制谐波的方法有采用模拟滤波器、傅里叶分析进行谐波分析、基于瞬时无功功率理论的方法等。当关键负载ZC为电流源型非线性负载时,电路原理图如图7所示,由于电流源型非线性负载可以等效为谐波电流源,关键负载电流ic便会含有谐波分量,导致输电线电流is和母线电压VS同样会含有谐波分量,导致供电质量的严重下降,对用电设备的正常工作造成影响。分别为流过线路阻抗、非关键负载、关键负载的电流,

FPGA/MATLAB学习教程/源码/项目合作开发 1632

HashMap 的多方位浅析

HashMap 的多方位浅析 写在前面,本文为笔者学习整理总结,若有不严谨或错误之处,还望不吝指教! 本文内容: 一、 存储结构 1. JDK 1.8 以前 2. JDK 1.8 之后 二、 地址计算、长度总是2的整次幂问题、hash计算、扰动函数 三、 put、putVal 函数 1. JDK 1.8 以前 2. JDK 1.8 之后 四、 re...

大爷没钱 302

华为OD机试双机位C卷 - 高矮个子排队 (C++/Py/Java/Js/Go/C)

华为OD机试双机位C卷 高矮个子排队,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 高矮个子排队。

qq_45776114的博客 2160

浅析hashmap

hashmap底层,扩容机制,线程安全的替代类

weixin_47056106的博客 1177

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HashMap浅析。

这里是修真院后端小课堂,每篇分享文从 八个方面深度解析后端知识/技能,本篇分享的是: 【HashMap浅析。】 大家好,我是IT修真院郑州分院第十期的学员,一枚正直纯洁善良的java程序员 今天给大家分享一下,修真院官网java任务十,深度思考中的知识点——HashMap浅析。 背景介绍 Map集合即K-V集合,加上一个hash,这样是散列、无序的。HashMap简单理解就是散列、无序的K-V集合...

learning__java的博客 96

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

HashMap浅析?

这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: 【HashMap浅析?】 大家好,我是IT修真院武汉分院学员,一枚正直善良的JAVA程序员。 今天给大家分享一下,修真院官网JAVA任务10中的深度...

weixin_34050389的博客 85

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

浅析HashMap

HashMap 1、简介 (1)散列桶(数组和链表) (2)非synchronized的,很快 (3)HashMap可以接受null键和值,而Hashtable不能 (4)查找效率主要取决于散列函数、处理冲突的方法和装载因子 2、工作原理 (1)如果无碰撞,放入桶bucket中 (2)如果碰撞了,以链表的方式链接到后面 (3)如果链表长度超过阙值TREEIFY THRESHOLD==8,就把链表装...

Bug君的博客 398
上一篇: shrio框架
下一篇: RMI的简单使用?
learning__java
博客等级 码龄8年 87粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值