动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

HashMap源码解析

04-22 10:39 641浏览
举报 T字号
  • 大字
  • 中字
  • 小字

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射,HashMap继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口,HashMap的实现不是同步的,这意味着它不是线程安全的,它的key、value都可以为null。此外HashMap中的映射不是有序的。

基于哈希表的 Map接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get 和 put)提供稳定的性能。迭代 collection视图所需的时间与 HashMap 实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。

HashMap 的实例有两个参数影响其性能:初始容量 和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash 操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。在Java编程语言中,加载因子默认值为0.75,默认哈希表元为101。

在Java的世界里,无论类还是各种数据,其结构的处理是整个程序的逻辑以及性能的关键。而HashMap无疑是JDK的一大实用工具,把各个Object映射起来,实现了“键--值”对应的快速存取。作为Java开发人员,HashMap底层原理更是面试必问的内容。本站的数位名师精心录制了《HashMap源码分析》课程,为大家深入揭开HashMap底层原理,让我们学有所得。 

课程目录如下:

 1-1 HashMap的基本操作   (15:42)

 1-2 哈希表的数据结构   (21:26)

 1-3 HashMap的put工作原理   (11:59)

 1-4 HashMap的get工作原理   (05:13)

 1-5 JDK8中HashMap的改进   (06:27)

 1-6 哈希表中的红黑树   (07:29)

 1-7 HashMap中的哈希碰撞   (06:25)

 1-8 第一次put添加键值对时给数组初始化   (14:13)

 1-9 put添加键值对源码分析   (15:20)

 1-10 get方法的源码分析   (10:09)

 1-11 HashMap初始化容量会调整为2的幂次方   (14:00)

 1-12 HashMap的应用统计字符出现的次数   (09:27)

据不完全统计,HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。HashMap的结构实现和功能原理都成为了Java中的关键知识,倘若不能掌握我们将在Java开发中寸步难行,让我们借助HashMap源码分析视频教程来完成我们华丽的蜕变吧!

0人推荐
共同学习,写下你的评论
0条评论
代码小兵
程序员代码小兵

4篇文章贡献13067字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

JavaWeb的3大组件

代码小兵49806-11 15:28

全面解析Cookie技术

代码小兵49806-11 15:51

浅谈JavaWeb架构演变

代码小兵49806-11 16:22

探讨Web开发中的Session存储与管理

代码小兵51603-29 17:28

JavaScript基础知识

 暴风城-小飞04-06 20:49

发评论

举报

0/150

取消