HashMap源码超详细解析
在知乎上看到这样一个问题:
HashMap
是我们日常开发中经常用到的一个小工具,正所谓磨刀不误砍柴工,有助于你的开发使用。当然了,面试官问你HashMap
的原理,并不是为了让你来写个性能更好的,他是想通过HashMap,了解你对数据结构,hash算法,hash冲突,与其他比较的优劣势等等的掌握情况,而且再看看你对技术有没有热情,平时喜不喜欢去钻研源码这些。
HashMap的底层数据结构:数组+链表+红黑树
数组:内存结构连续,下标定位,初始化后容量大小固定,如果超出容量大小,会复制一份新的
链表:内存不连续,每一块内存中都有保存下一块内存的地址,增删简单灵活,但是要取某个元素就需要去遍历
散列表:结合数组和链表
这里分享我对HashMap源码中常用方法的详细分析,源文件:HashMap.java
如果对您有所帮助,欢迎一键三连,多谢!