在知乎上看到这样一个问题:
HashMap
是我们日常开发中经常用到的一个小工具,正所谓磨刀不误砍柴工,有助于你的开发使用。当然了,面试官问你HashMap
的原理,并不是为了让你来写个性能更好的,他是想通过HashMap,了解你对数据结构,hash算法,hash冲突,与其他比较的优劣势等等的掌握情况,而且再看看你对技术有没有热情,平时喜不喜欢去钻研源码这些。
这里分享我对HashMap源码中常用方法的详细分析,源文件:HashMap.java
HashMap的底层数据结构:数组+链表+红黑树
HashMap中一些变量的定义的解释
扰动函数:
计算扩容大小的方法:
常用的空参构造:
get方法
put方法
扩容函数:
remove方法:
源文件链接:HashMap.java
如果对您有所帮助,欢迎一键三连,多谢!