ArrayList底层原理

ArrayList

ArrayList 是 Java 集合框架中的一个类,实现了 List 接口。它基于动态数组,提供了可变大小的数组功能。

底层结构

数组实现:ArrayList 使用一个数组来存储元素。初始容量为 10,可以动态扩展。

主要操作原理

1.添加元素:

如果数组有剩余空间,直接添加。

如果数组已满,会创建一个更大的新数组(通常是原来大小的 1.5 倍),然后复制旧数组的内容到新数组。

2.获取元素:

通过索引直接访问,时间复杂度为 O(1)。

3.插入和删除元素:

插入时,需要移动插入位置后的所有元素。

删除时,需要移动删除位置后的所有元素。

这些操作的时间复杂度为 O(n)。

4.动态扩容:

当达到最大容量时,自动扩容。

扩容过程涉及数组复制,可能影响性能。

5.注意事项

性能:在尾部插入和访问元素速度快,但在中间插入或删除元素时,性能可能较低。

线程安全:ArrayList 不是线程安全的,如果多线程访问需要手动同步。

相关推荐
腻害兔20 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社20 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
萧瑟余晖21 小时前
JDK 26 新特性详解
java·开发语言
马优晨1 天前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
维天说1 天前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zane19941 天前
并发 vs 并行:别再傻傻分不清了,一文讲透 Java 并发编程的第一课
java·后端
噢,我明白了1 天前
java中Excel的导入和导出(EasyExcel)
java·开发语言·excel
吠品1 天前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
啊湘1 天前
天气查询API接口 按月Token鉴权 实时天气 物联网可用 文档齐全
java·后端·struts
Java内核笔记1 天前
告别十亿美元的错误 : Spring Boot 4 空安全 (JSpecify) 实战
java·spring boot·后端