容器ArrayList原理(学习)

一、概述

动态数组,容量能动态增长,元素可以为null,用数组存储,非线程同步(vector线程同步)

每个 ArrayList 实例都有一个容量,该容量是指用来存储列表元素的数组的大小,自动增长(默认初始大小为10,然后递增式大约1.5倍增长)会带来数据向新数组的重新拷贝,因此,如果可预知数据量的多少,可在构造 ArrayList 时指定其容量。在添加大量元素前,应用程序也可以使用 ensureCapacity 操作来增加 ArrayList 实例的容量,这可以减少递增式再分配的数量。

 

二、实现

底层为数组存储;

 add操作 =》

先ensureCapacity ;扩容 newCapacity = (oldCapacity * 3)/2 + 1;之后Arrays.copyOf数组拷贝;

 

 get操作=》

index越界抛异常

 

 remove操作=》

public E remove(int index) :return oldValue;        数据再拷贝使用  System.arraycopy

return oldValue;
System.arraycopy

public boolean remove(Object o) 
newCapacity = (oldCapacity * 3)/2 + 1;)




posted @   牛哥学coding  阅读(129)  评论(0编辑  收藏  举报
编辑推荐:
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
阅读排行:
· 想让你多爱自己一些的开源计时器
· Cursor预测程序员行业倒计时:CTO应做好50%裁员计划
· 大模型 Token 究竟是啥:图解大模型Token
· 如何在 .NET 中 使用 ANTLR4
· HttpClient使用方法总结及工具类封装
点击右上角即可分享
微信分享提示