浅析哈希源码

系列文章目录

数据结构之哈希表_crazy_xieyi的博客-CSDN博客

数据结构之Map&Set_crazy_xieyi的博客-CSDN博客


解析源码之前的几个疑问?
1.HashMap在什么时候开辟的内存?
2.不带参数的构造方法,默认哈希表的数组大小是多少?
3. HashMap map = new HashMap<>(19);此时分配的内存是多少?
4.一般地,哈希表示数组+链表的方法进行存储,在满足什么条件的时候链表会变成树?
5.当HashMap扩容的时候需要注意什么?
6.hashcode与equals的区别?


下面就看看源码:

浅析哈希源码_第1张图片


 浅析哈希源码_第2张图片

浅析哈希源码_第3张图片

浅析哈希源码_第4张图片

浅析哈希源码_第5张图片 当看完以上的源码,我想1-4的问题就已经解决了。那么当HashMap扩容的时候需要注意什么?这个时候,每一个元素都要进行重新哈希。hashcode与equals有什么区别?两个对象的hashcode相同,equals不一定相同;两个对象的equals相同,hashcode一定相同。

你可能感兴趣的:(数据结构与算法,数据结构,算法,哈希算法,java)