java容量_Java集合类初始容量、加载因子、扩容增量
当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。
加载因子的系数小于等于1,意指 即当 元素个数 超过 容量长度*加载因子的系数 时,进行扩容。
另外,扩容也是有默认的倍数的,不同的容器扩容情况不同。
List元素是有序的、可重复
ArrayList、Vector默认初始容量为10
Vector:线程安全,但速度慢
底层数据结构是数组结构
加载因子为1:即当 元素个数 超过 容量长度 时,进行扩容
扩容增量:原容量的 1倍
如 Vector的容量为10,一次扩容后是容量为20
ArrayList:线程不安全,查询速度快
底层数据结构是数组结构
扩容增量:原容量的 0.5倍+1
如 ArrayList的容量为10,一次扩容后是容量为16
Set(集)元素无序的、不可重复。
HashSet:线程不安全,存取速度快
底层实现是一个HashMap(保存数据),实现Set接口
默认初始容量为16(为何是16,见下方对HashMap的描述)
加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容
扩容增量:原容量的 1 倍
如 HashSet的容量为16,一次扩容后是容量为32
构造方法摘要HashSet()
HashSet(int initialCapacity)
构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和默认的加载因子(0.75)。
HashSet hs=new HashSet(1);
所以可见 HashSet类,创建对象的时候是可以的制定容量的大小的 ,期中第二个就具有这个工功能。
Map是一个双列集合
HashMap:默认初始容量为16
(为何是16:16是2^4,可以提高查询效率,另外,32=16<<1 -->至于详细的原因可另行分析,或分析源代码)
加载因子为0.75:即当 元素个数 超过 容量长度的0.75倍 时,进行扩容
扩容增量:原容量的 1 倍
如 HashSet的容量为16,一次扩容后是容量为32
java容量_Java集合类初始容量、加载因子、扩容增量相关推荐
- 对HashMap数据结构的理解——加载因子和初始容量
先看源码: 解释一下位移运算: 1<<4 是位移运算的表示,为十进制16 1的二进制表示:1 左移4位之后的二进制表示为B(10000) = D(16) 更简单的计算方法就是 1<& ...
- hashmap 不释放空间_刁难问题,为什么HashMap默认容量为16加载因子为0.75
前言:实际开发中我们大多数都是只能new HashMap<>来存储键值对,很少会去设置初始容量,虽然我们知道他的默认容量是16.但是在面试中,为了体现你个人好学的能力,还是会被经常问到为什 ...
- .net 怎么循环得到数组里的值_HashMap 底层实现、加载因子、容量值及死循环
写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下! GitHub地址:abel-max/Java-Study ...
- java找不到或无法加载主类_java找不到或无法加载主类如何解决?解决方法
相信有很多人都遇到过java找不到或无法加载主类的这个问题,那么这究竟是什么原因造成的呢?有什么方法可以解决这个问题吗? 问题: java文件导入到一个包当中,之后在class文件当中加入一张图片; ...
- [转]为什么Java中的HashMap默认加载因子是0.75
前几天在一个群里看到有人讨论hashmap中的加载因子为什么是默认0.75. HashMap源码中的加载因子 static final float DEFAULT_LOAD_FACTOR = 0.75 ...
- 【java】为什么 HashMap 的加载因子是0.75?
1.概述 转载:为什么 HashMap 的加载因子是0.75? 有很多东西之前在学的时候没怎么注意,笔者也是在重温HashMap的时候发现有很多可以去细究的问题,最终是会回归于数学的,如HashMap ...
- java 找不到或无法加载主类- 解决方案
java 找不到或无法加载主类- 解决方案 参考文章: (1)java 找不到或无法加载主类- 解决方案 (2)https://www.cnblogs.com/caibixiang123/p/1170 ...
- 为什么 HashMap 加载因子一定是0.75?而不是0.8,0.6?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 有很多东西之前在学的时候没怎么注意,笔者也是在重温HashMap的 ...
- 为什么 HashMap 的加载因子是0.75?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://blog.csdn.net/N ...
最新文章
- Determine whether an integer is a palindrome. Do this without extra space.
- hdfs源码分析第二弹
- win定时关机_如何设置电脑定时关机?电脑新手有必要掌握一波!
- 新疆大学OJ(ACM) 1047: string 字符串排序
- Spring IOC详解与配置
- Android Lint简介
- c语言输入括号配对成功输出1,用数组实现括号配对检查,输出不正确,请大家指点解决办法...
- iOS 程序打包,安装流程
- win7 virtio 驱动下载
- c语言设计评分程序,C语言程序设计课程设计---设计比赛评分系统
- To analyze love in women’s kingdom of the Journey to the West
- 项目 0: 预测泰坦尼克号乘客生还率
- 华为ensp配置AC+AP多个SSID信号
- awesomium -- 出色的Web浏览插件
- 【工程光学】光度学色度学
- recsys2022比赛baseline - 基于ItemCF
- 智微JMS901量产工具软件+固件,JMS901双接口U盘成功量产教程分享
- 过压保护芯片—— QX3001 可以替代 lp78070f FM5001
- 【解决方案】智能安防监控EasyCVR视频融合平台在棋牌室、洗浴中心等行业的应用
- 使用Excel批量添加数据