ArrayList底层原理

ArrayList

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

底层结构

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

主要操作原理

1.添加元素:

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

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

2.获取元素:

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

3.插入和删除元素:

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

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

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

4.动态扩容:

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

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

5.注意事项

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

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

相关推荐
星空ξ1 分钟前
OpenCode + Oh-My-OpenCode 配置指南:集成 GitHub Copilot 模型与 Java LSP (jdtls)
java·github·copilot·opencode·oh-my-opencode
Seven971 分钟前
Tomcat Request请求处理:Container设计
java
逸Y 仙X3 分钟前
文章十五:ElasticSearch 运用ingest加工索引数据
java·大数据·elasticsearch·搜索引擎·全文检索
京师20万禁军教头13 分钟前
35面向对象(中级)-编程思想
java
yuzhiboyouye14 分钟前
java redis(缓存)
java·redis·缓存
大大杰哥23 分钟前
DAG 学习笔记:从拓扑排序到并行执行
java
2501_9130613424 分钟前
JVM虚拟机——面试中的八股文(下)
java·jvm·面试
京师20万禁军教头26 分钟前
36面向对象(高级)-类变量(静态变量)和类方法(静态方法)
java
deviant-ART27 分钟前
HttpServletResponse 中 Header 与 OutputStream 的正确使用顺序(避坑指南)
java·后端·servlet
JAVA面经实录91730 分钟前
Spring AI 高频开发万能 Prompt 合集 + 生产级工具类
java·人工智能·spring·prompt