news 2026/4/28 1:49:25

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/4/27 13:03:18

百度网盘直链解析工具实战指南

百度网盘直链解析工具实战指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在当前网络环境中&#xff0c;百度网盘作为国内主流的云存储服务&#xff0c;其下载速度限制常常…

作者头像 李华
网站建设 2026/4/25 4:45:29

快速理解LCD显示屏驱动流程:5分钟掌握基本步骤

从零开始搞懂LCD驱动&#xff1a;一个嵌入式工程师的实战笔记最近项目里又碰上了LCD屏调不通的问题——上电黑屏、花屏乱码、显示偏移……这些“经典”故障几乎每个做嵌入式的人都踩过坑。你翻数据手册&#xff0c;发现初始化序列一长串命令和参数&#xff1b;示波器抓信号&…

作者头像 李华
网站建设 2026/4/27 5:42:29

办公文档预览革命:告别传统Office启动等待

办公文档预览革命&#xff1a;告别传统Office启动等待 【免费下载链接】QuickLook.Plugin.OfficeViewer Word, Excel, and PowerPoint plugin for QuickLook. 项目地址: https://gitcode.com/gh_mirrors/qu/QuickLook.Plugin.OfficeViewer 在日常工作中&#xff0c;你是…

作者头像 李华
网站建设 2026/4/17 19:25:57

智能内容提取革命:B站视频文字转换技术深度解析

在信息爆炸的时代&#xff0c;视频内容已成为知识传播的重要载体。然而&#xff0c;如何从海量视频中高效提取核心信息&#xff0c;成为内容工作者面临的共同挑战。Bili2text作为一款基于AI技术的智能转换工具&#xff0c;正在重新定义视频内容处理的工作流。 【免费下载链接】…

作者头像 李华
网站建设 2026/4/23 15:20:39

从零实现ES6函数扩展在Babel中的编译流程

从零实现 ES6 函数扩展在 Babel 中的编译流程当你的箭头函数在 IE11 里“消失”了你有没有遇到过这样的场景&#xff1f;写完一段优雅的现代 JavaScript&#xff0c;包含默认参数、剩余参数和箭头函数&#xff0c;在 Chrome 里跑得好好的。结果一部署到生产环境&#xff0c;IE1…

作者头像 李华
网站建设 2026/4/26 19:07:37

如何在NVIDIA显卡上运行PyTorch?使用CUDA-v2.6镜像轻松实现

如何在 NVIDIA 显卡上运行 PyTorch&#xff1f;使用 CUDA-v2.6 镜像轻松实现在深度学习项目中&#xff0c;最让人头疼的往往不是模型设计&#xff0c;而是环境配置——尤其是当你面对“CUDA 不可用”“cuDNN 版本不匹配”这类报错时。明明代码写得没问题&#xff0c;却因为底层…

作者头像 李华