写点什么

加载因子

0 人感兴趣 · 2 次引用

  • 最新
  • 推荐
https://static001.geekbang.org/infoq/62/62699238f5c67314a969d51273e28d53.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

工作三年,小胖连 HashMap 源码都没读过?真的菜!

在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的,JDK 1.8 之后新增了红黑树的组成结构,当链表长度大于 8 并且 hash 桶的容量大于 64 时,链表结构会转换成红黑树结构。所以,它的组成结构如下图所示:

https://static001.geekbang.org/infoq/89/896e5d0b2868021e4eb1b7aae2174449.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

HashMap 加载因子为什么是 0.75?

用户头像
java_wxid
2021-03-30

如果加载因子比较大,扩容发生的频率比较低,浪费的空间比较小,发生hash冲突的几率比较大。比如,加载因子是1的时候,hashmap长度为128,实际存储元素的数量在64至128之间时间段比较多,这个时间段发生hash冲突比较多,造成数组中其中一条链表比较长。

加载因子_加载因子技术文章_InfoQ写作社区