浅析哈希源码

简介: 浅析哈希源码

解析源码之前的几个疑问?


1.HashMap在什么时候开辟的内存?

2.不带参数的构造方法,默认哈希表的数组大小是多少?

3. HashMap<String,Integer> map = new HashMap<>(19);此时分配的内存是多少?

4.一般地,哈希表示数组+链表的方法进行存储,在满足什么条件的时候链表会变成树?

5.当HashMap扩容的时候需要注意什么?

6.hashcode与equals的区别?


下面就看看源码:

1667919360210.jpg

1667919371370.jpg

1667919388577.jpg

1667919402389.jpg

1667919423054.jpg


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


相关文章
|
5月前
|
存储 Serverless C++
【C++高阶(五)】哈希思想--哈希表&哈希桶
【C++高阶(五)】哈希思想--哈希表&哈希桶
|
5月前
|
存储 算法 数据安全/隐私保护
【C++入门到精通】 哈希结构 | 哈希冲突 | 哈希函数 | 闭散列 | 开散列 [ C++入门 ]
【C++入门到精通】 哈希结构 | 哈希冲突 | 哈希函数 | 闭散列 | 开散列 [ C++入门 ]
54 0
|
12月前
|
存储 算法 Shell
哈希表、哈希桶(C++实现)【STL】
哈希表、哈希桶(C++实现)【STL】
130 0
|
算法 Java
|
存储 缓存 算法
【C++进阶】九、哈希表
目录 一、哈希概念 二、哈希冲突 三、哈希函数 四、哈希冲突解决 4.1 闭散列(开放定址法) 4.1.1 线性探测 4.1.2 二次探测 4.1.3 研究表明 五、哈希表的闭散列实现 5.1 闭散列哈希表的结构 5.2 闭散列的插入 5.2 闭散列的查找 5.3 闭散列的查找 5.4 哈希表取模问题 5.5 string类型无法取模问题 5.6 完整代码 四、哈希冲突解决 4.2 开散列(链地址法、哈希桶) 六、哈希表的开散列实现(哈希桶) 6.1 哈希桶的结构 6.2 哈希桶的插入 6.3 哈希桶的查找 6.4 哈希桶的删除 6.5 完整代码
103 0
【C++进阶】九、哈希表
|
存储 缓存 算法
【第五天】算法图解--哈希表(散列表)Hash函数
【第五天】算法图解--哈希表(散列表)Hash函数
|
Java
Java实现哈希表
Java实现哈希表
80 0
Java实现哈希表
|
算法 数据库 开发者
数据结构和算法-哈希表(散列)1|学习笔记
快速学习数据结构和算法-哈希表(散列)1
数据结构和算法-哈希表(散列)1|学习笔记