一、前言得益于Doug Lea老爷子的操刀,让HashMap成为使用和面试最频繁的API,没办法设计的太优秀了!
HashMap 最早出现在 JDK 1.2中,底层基于散列算法实现 。HashMap 允许 null 键和 null 值,在计算哈键的哈希值时,null 键哈希值为 0 。HashMap 并不保证键值对的顺序,这意味着在进行某些操作后,键值对的顺序可能会发生变化 。另外,需要注意的是,HashMap 是非线程安全类,在多线程环境下可能会存在问题 。
HashMap 最早在JDK 1.2中就出现了,底层是基于散列算法实现,随着几代的优化更新到目前为止它的源码部分已经比较复杂,涉及的知识点也非常多,在JDK 1.8中包括;1、散列表实现、2、扰动函数、3、初始化容量、4、负载因子、5、扩容元素拆分、6、链表树化、7、红黑树、8、插入、9、查找、10、删除、11、遍历、12、分段锁等等,因涉及的知识点较多所以需要分开讲解,本章节我们会先把目光放在前五项上,也就是关于数据结构的使用上 。
数据结构相关往往与数学离不开,学习过程中建议下载相应源码进行实验验证,可能这个过程有点烧脑,但学会后不用死记硬背就可以理解这部分知识 。
二、资源下载本章节涉及的源码和资源在工程,interview-04中,包括;
- 10万单词测试数据,在doc文件夹
- 扰动函数Excel展现,在dock文件夹
- 测试源码部分在interview-04工程中
推荐阅读
- 颠覆了我认知!阿里架构师原来是这样定义微服务、分布式构架的
- Masscan - 五分钟扫描整个互联网
- 春秋时期晋国是怎么灭亡的 晋国不亡秦国能统一
- 历史上的虢国夫人 虢国夫人是哪个朝代
- 术士|魔兽TBC:P5首发职业选择,2个职业是核心,占据SW开荒14个名额
- 老班章是什么茶,什么茶叶贵
- 红楼梦里红麝串是什么 宝钗羞笼红麝串主要内容
- 龚姓祖先是谁 龚姓的起源和历史
- 历史上康熙的宜妃是怎么死的 为什么康熙不考虑宜妃的儿子
- 拓跋珪父亲是拓跋什翼犍 拓跋绍弑父