当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使效率大大降低。

加载因子的系数小于等于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集合类初始容量、加载因子、扩容增量相关推荐

  1. 对HashMap数据结构的理解——加载因子和初始容量

    先看源码: 解释一下位移运算: 1<<4 是位移运算的表示,为十进制16 1的二进制表示:1 左移4位之后的二进制表示为B(10000) = D(16) 更简单的计算方法就是 1<& ...

  2. hashmap 不释放空间_刁难问题,为什么HashMap默认容量为16加载因子为0.75

    前言:实际开发中我们大多数都是只能new HashMap<>来存储键值对,很少会去设置初始容量,虽然我们知道他的默认容量是16.但是在面试中,为了体现你个人好学的能力,还是会被经常问到为什 ...

  3. .net 怎么循环得到数组里的值_HashMap 底层实现、加载因子、容量值及死循环

    写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下! GitHub地址:abel-max/Java-Study ...

  4. java找不到或无法加载主类_java找不到或无法加载主类如何解决?解决方法

    相信有很多人都遇到过java找不到或无法加载主类的这个问题,那么这究竟是什么原因造成的呢?有什么方法可以解决这个问题吗? 问题: java文件导入到一个包当中,之后在class文件当中加入一张图片; ...

  5. [转]为什么Java中的HashMap默认加载因子是0.75

    前几天在一个群里看到有人讨论hashmap中的加载因子为什么是默认0.75. HashMap源码中的加载因子 static final float DEFAULT_LOAD_FACTOR = 0.75 ...

  6. 【java】为什么 HashMap 的加载因子是0.75?

    1.概述 转载:为什么 HashMap 的加载因子是0.75? 有很多东西之前在学的时候没怎么注意,笔者也是在重温HashMap的时候发现有很多可以去细究的问题,最终是会回归于数学的,如HashMap ...

  7. java 找不到或无法加载主类- 解决方案

    java 找不到或无法加载主类- 解决方案 参考文章: (1)java 找不到或无法加载主类- 解决方案 (2)https://www.cnblogs.com/caibixiang123/p/1170 ...

  8. 为什么 HashMap 加载因子一定是0.75?而不是0.8,0.6?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 有很多东西之前在学的时候没怎么注意,笔者也是在重温HashMap的 ...

  9. 为什么 HashMap 的加载因子是0.75?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://blog.csdn.net/N ...

最新文章

  1. Determine whether an integer is a palindrome. Do this without extra space.
  2. hdfs源码分析第二弹
  3. win定时关机_如何设置电脑定时关机?电脑新手有必要掌握一波!
  4. 新疆大学OJ(ACM) 1047: string 字符串排序
  5. Spring IOC详解与配置
  6. Android Lint简介
  7. c语言输入括号配对成功输出1,用数组实现括号配对检查,输出不正确,请大家指点解决办法...
  8. iOS 程序打包,安装流程
  9. win7 virtio 驱动下载
  10. c语言设计评分程序,C语言程序设计课程设计---设计比赛评分系统
  11. To analyze love in women’s kingdom of the Journey to the West
  12. 项目 0: 预测泰坦尼克号乘客生还率
  13. 华为ensp配置AC+AP多个SSID信号
  14. awesomium -- 出色的Web浏览插件
  15. 【工程光学】光度学色度学
  16. recsys2022比赛baseline - 基于ItemCF
  17. 智微JMS901量产工具软件+固件,JMS901双接口U盘成功量产教程分享
  18. 过压保护芯片—— QX3001 可以替代 lp78070f FM5001
  19. 【解决方案】智能安防监控EasyCVR视频融合平台在棋牌室、洗浴中心等行业的应用
  20. 使用Excel批量添加数据

热门文章

  1. 开源 java CMS - FreeCMS2.8 自定义标签 channelSon
  2. UITableView(UIScrollView)滑动到底部的判断
  3. Linux运维人员必会开源运维工具体系
  4. 《数据分析变革:大数据时代精准决策之道》一第1章 了解运营型分析
  5. 吃万里路 |甜品店大盘点
  6. Android运行时识别API版本
  7. Lvs 负载均衡之nat模式配置
  8. Command_Of_Windows1
  9. MySQL主从复制简单设置
  10. 最小的权限+最少的服务=最大的安全