news 2026/9/3 4:14:41

ArrayList的扩容机制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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倍,集合大小)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 22:06:56

PotPlayer字幕翻译插件终极指南:5分钟快速配置百度翻译API

还在为外语视频的字幕发愁吗&#xff1f;PotPlayer字幕翻译插件能够完美解决你的观影障碍&#xff01;这款基于百度翻译API的开源工具能够实时将外文字幕转换为中文&#xff0c;让你畅享全球影视内容。作为一款完全免费的字幕翻译解决方案&#xff0c;它支持多种语言互译&#…

作者头像 李华
网站建设 2026/9/2 21:37:27

ncmdump新手完全指南:轻松解锁网易云音乐NCM格式

还在为下载的网易云音乐无法在其他设备播放而烦恼吗&#xff1f;ncmdump正是你需要的NCM格式解锁神器&#xff01;这款开源工具能够快速将加密的NCM文件转换为通用的MP3或FLAC格式&#xff0c;让你真正拥有音乐的自由。 【免费下载链接】ncmdump ncmdump - 网易云音乐NCM转换 …

作者头像 李华
网站建设 2026/8/29 11:37:09

Poppler Windows版:重新定义PDF处理体验

Poppler Windows版&#xff1a;重新定义PDF处理体验 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 你是否曾为Windows平台上的PDF处理工具感到困扰…

作者头像 李华
网站建设 2026/9/2 20:42:24

RePKG完全使用手册:轻松掌握Wallpaper Engine资源提取技术

RePKG完全使用手册&#xff1a;轻松掌握Wallpaper Engine资源提取技术 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg RePKG是一款专为Wallpaper Engine设计的强大资源提取工具&…

作者头像 李华
网站建设 2026/9/2 21:35:41

B站视频转文字神器:极速智能提取,三分钟搞定内容创作

B站视频转文字神器&#xff1a;极速智能提取&#xff0c;三分钟搞定内容创作 【免费下载链接】bili2text Bilibili视频转文字&#xff0c;一步到位&#xff0c;输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为B站视频中的精彩内容无法快…

作者头像 李华
网站建设 2026/9/2 21:38:49

手把手教你完成Yocto基础镜像构建

手把手带你构建第一个 Yocto 基础镜像&#xff1a;从零开始的嵌入式 Linux 定制之旅 你有没有遇到过这样的场景&#xff1f; 手头有一块全新的嵌入式板子&#xff0c;想跑个精简系统&#xff0c;却发现现成的发行版&#xff08;比如 Ubuntu Core&#xff09;启动太慢、资源占用…

作者头像 李华