当前位置: 首页 > news >正文

ArrayList的扩容机制

new一个无参的list,内部就会创建一个空的数组

public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; }

传入有参的list,会创建一个参数大小的数组

public ArrayList(int initialCapacity) { if (initialCapacity > 0) { this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); } }

传入一个collection集合,会用集合大小作为起始容量

public ArrayList(Collection<? extends E> c) { Object[] a = c.toArray(); if ((size = a.length) != 0) { if (c.getClass() == ArrayList.class) { elementData = a; } else { elementData = Arrays.copyOf(a, size, Object[].class); } } else { // replace with empty array. elementData = EMPTY_ELEMENTDATA; } }

add方法:

在添加一个元素的时候,会立马创建一个大小为10的数组

在数组满的时候,会进行扩容扩容的大小为原数组大小的1.5倍

这里的1.5倍并不是乘数计算,而是位运算例如:10>>>1 =5,原来的10+5 =15(新数组的大小)

addAll方法:

没有元素的时候,扩容大小Math.max(10,集合大小)

有元素的时候,扩容大小为Math.max(原容量的1.5倍,集合大小)

http://www.zskr.cn/news/172471.html

相关文章:

  • 终极显卡调校指南:3步释放NVIDIA隐藏性能
  • Windows平台Poppler PDF工具完全指南:从零开始快速上手
  • B站视频转文字:解放双手的内容提取革命
  • 项目应用:为你的应用程序添加自动minidump上传功能
  • AMD Ryzen性能监控完整指南:ZenTimings工具深度应用实战
  • 超详细版JK触发器分析:初学者避坑与仿真技巧
  • 猫抓Cat-Catch:网页媒体资源抓取技术深度解析
  • ZenTimings:AMD处理器性能监控的终极指南
  • 闲鱼自动化工具终极指南:告别手动操作,轻松管理闲鱼店铺
  • 如何轻松解决JetBrains IDE试用期限制:开源重置工具完整解析
  • 没主力机也能转音频?这个小程序救了我的急!
  • Bili2text:B站视频语音识别与文本转换技术详解
  • PotPlayer字幕翻译插件终极指南:5分钟快速配置百度翻译API
  • PyTorch-CUDA-v2.6镜像如何实现强化学习PPO算法?
  • GitHub项目快速复现:使用PyTorch-CUDA-v2.6镜像统一开发环境
  • 从零实现Zynq上基于VDMA的帧缓存管理系统
  • 手把手教你完成Yocto基础镜像构建
  • Conda环境冲突频发?转向PyTorch-CUDA-v2.6容器化解决方案
  • 《nx12.0异常处理实战:捕获std异常完整示例》
  • 闲鱼自动化工具2025:终极解决方案,每天多赚200闲鱼币!
  • 一文搞懂PyTorch-CUDA-v2.6镜像在Jupyter中的使用方法
  • 深度剖析Batocera游戏整合包如何充分发挥Pi 4性能
  • B站视频内容智能提取:让语音转文字变得轻松自如
  • 基于Docker的PyTorch环境搭建:CUDA-v2.6镜像使用详解
  • 超详细版:续流二极管与TVS在电机保护中的协同
  • PyTorch-CUDA-v2.6镜像如何实现文档布局分析?LayoutLM
  • Elasticsearch设置密码:常见错误排查与修复
  • 从零实现PCB布线:线宽与电流配置指南
  • Multisim安装时数据库权限设置操作指南
  • PyTorch-CUDA-v2.6镜像如何实现多任务学习(Multi-task Learning)