HashMap这次是真的懂了,扰动函数、负载因子、扩容拆分全搞定

一、前言得益于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中,包括;

  1. 10万单词测试数据,在doc文件夹
  2. 扰动函数Excel展现,在dock文件夹
  3. 测试源码部分在interview-04工程中
可以通过关注公众号:bugstack虫洞栈,回复下载进行获取{


    推荐阅读