【JavaP6大纲】Java基础篇:HashMap加载因子为什么是0.75?

简介: 【JavaP6大纲】Java基础篇:HashMap加载因子为什么是0.75?

HashMap加载因子为什么是0.75


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


如果加载因子比较小,扩容发生的频率比较高,浪费的空间比较每,发生hash冲突的几率比较小。比如,加载因子是0.5的时候,hashmap长度为128,当数量达到65的时候会触发扩容,扩容后为原理的256,256里面只存储了65个浪费了,


综合了一下,取了一个平均数0.75作为加载因子。当负载因子为0.75时代入到泊松分布公式,计算出来长度为8时,概率=000000006,概率很小了,链表Q长度为8时转红多树。

相关文章
|
7小时前
|
存储 安全 算法
【JAVA】HashMap扩容性能影响及优化策略
【JAVA】HashMap扩容性能影响及优化策略
|
7小时前
|
存储 安全 Java
Java一分钟之-Map接口与HashMap详解
【5月更文挑战第10天】Java集合框架中的`Map`接口用于存储唯一键值对,而`HashMap`是其快速实现,基于哈希表支持高效查找、添加和删除。本文介绍了`Map`的核心方法,如`put`、`get`和`remove`,以及`HashMap`的特性:快速访问、无序和非线程安全。讨论了键的唯一性、`equals()`和`hashCode()`的正确实现以及线程安全问题。通过示例展示了基本操作和自定义键的使用,强调理解这些概念对编写健壮代码的重要性。
8 0
|
7小时前
|
存储 安全 Java
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
Java容器类List、ArrayList、Vector及map、HashTable、HashMap
|
7小时前
|
Java
Java为什么建议初始化HashMap的容量大小?
【5月更文挑战第3天】Java中初始化HashMap容量能提升性能。默认容量16,扩容按当前的1/2进行。预估元素数量设定合适容量可避免频繁扩容,减少性能损耗。过大浪费内存,过小频繁扩容,需权衡。Java 8后扩容策略调整,但核心仍是预估初始容量以优化性能。
40 1
|
7小时前
|
存储 Java 索引
【JAVA】HashMap的put()方法执行流程
【JAVA】HashMap的put()方法执行流程
|
7小时前
|
存储 安全 Java
Java程序员必须掌握的数据结构:HashMap
HashMap底层原理实现是每个Java Boy必须掌握的基本技能,HashMap也是业务开发每天都需要遇到的好伙伴。如此基础且核心的底层数据结构,JDK也给其赋予了线程安全的功能,我们来看看~
39 2
Java程序员必须掌握的数据结构:HashMap
|
7小时前
|
Java
[JVM] Java类的加载过程
[JVM] Java类的加载过程
[JVM] Java类的加载过程
|
7小时前
|
Java 存储
键值之道:深入学习Java中强大的HashMap(二)
键值之道:深入学习Java中强大的HashMap
58 0
键值之道:深入学习Java中强大的HashMap(二)
|
7小时前
|
存储 Java 索引
Java HashMap:设计思想与实现原理详解
Java HashMap:设计思想与实现原理详解
145 0
|
7小时前
|
存储 算法 安全
认真学习Java集合之HashMap的实现原理
认真学习Java集合之HashMap的实现原理
31 0
认真学习Java集合之HashMap的实现原理