首页 > 编程语言 >Java HashMap 的扩容因子为什么是 0.75

Java HashMap 的扩容因子为什么是 0.75

时间:2022-12-01 03:22:05浏览次数:69  
标签:扩容 Java HashMap 哈希 因子 0.75 加载

所谓的加载因子,也叫扩容因子或者负载因子,它是用来进行扩容判断的。

假设加载因子是0.5,HashMap初始化容量是16,当HashMap中有16 * 0.5=8个元素时,HashMap就会进行扩容操作。

HashMap中加载因子为0.75,是考虑到了性能和容量的平衡。

由加载因子的定义,可以知道它的取值范围是(0, 1]。

  • 如果加载因子过小,那么扩容门槛低,扩容频繁,这虽然能使元素存储得更稀疏,有效避免了哈希冲突发生,同时操作性能较高,但是会占用更多的空间。
  • 如果加载因子过大,那么扩容门槛高,扩容不频繁,虽然占用的空间降低了,但是这会导致元素存储密集,发生哈希冲突的概率大大提高,从而导致存储元素的数据结构更加复杂(用于解决哈希冲突),最终导致操作性能降低。
  • 还有一个因素是为了提升扩容效率。因为HashMap的容量(size属性,构造函数中的initialCapacity变量)有一个要求:它一定是2的幂。所以加载因子选择了0.75就可以保证它与容量的乘积为整数。

 

简单来说就是结合了存储和时间的考虑,每次扩容都会重新计算 Hash 值的。

 

https://www.ossez.com/t/java-hashmap-0-75/14225

标签:扩容,Java,HashMap,哈希,因子,0.75,加载
From: https://www.cnblogs.com/huyuchengus/p/16940303.html

相关文章

  • HashMap 的初始值和最大值和扩容因子
    HashMap初始化默认值HashMap的初始化默认值是16。当然你也可以在HashMap构造的时候传入初始化的值。HashMap的最大值HashMap最大值是1<<30。<< 这个是Java......
  • 如何使用 LinkedHashMap 实现 LRU 缓存?
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。大家好,我是小彭。在上一篇文章里,我们聊到了HashMap的实现原理和源码分析,在源码分析的过程中......
  • JavaWeb项目练习(学生选课管理系统)一
    打算做一个选课管理系统,作为期末的复习。上需求2.1页面要求(1)系统可以通过浏览器直接访问;(1分)(2)各个功能页面整体风格统一;(2分)(3)首页为用户登录页面,管理员、教师、学生三......
  • java 02
    java变量&数组&标准输入输出&运算符&String~~有出错的地方,我会及时改正owo~~标识符(好像包含关键字)命名规则标识符由字母、数字、下划线、美元等(比如中文也可以但不是......
  • 这回终于把Java类中Serialversionuid 作用讲的明明白白了
    实现Serializable接口的目的是为类可持久化,比如在网络传输或本地存储,为系统的分布和异构部署提供先决条件。若没有序列化,现在我们所熟悉的远程调用,对象数据库都不可能存在,......
  • 【Java并发入门】02 Java内存模型:看Java如何解决可见性和有序性问题
    如何解决其中的可见性和有序性导致的问题,这也就引出来了今天的主角——Java内存模型。一、什么是Java内存模型?导致可见性的原因是缓存,导致有序性的原因是编译优化,那解......
  • IDEA打开java项目后不能运行
    这篇文章主要介绍了记一次用IDEA打开java项目后不能运行的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编......
  • Java外包程序员的技术出路
    学习的两个目的:应付面试应付工作(解决问题)首先要明白学习的目的,不同阶段,不同技术的学习目的是不一样的。有些技术,仅仅是应用级别的,有些技术是原理级别的(主要还是应试)。......
  • Java学习十
    一.小结1.不可变对象一旦创建,就不能改变。为防止用户修改对象,可以定义不可变类。2.实例变量和静态变量的作用域是整个类,与变量在何处声明无关。实例变量和静态变量可以在......
  • hashmap 的重新散列和装载因子
    HashMap的装载因子是0.75,用人话说就是当HashMap的容量达到定义容量的75%的时候,HashMap会进行扩容,当HashMap进行扩容的时候就会重新散列(rehashing)。经过考古,可以......