文章目录
一、ArrayList是什么?
ArrayList是java集合框架的一部分,用于存储多个对象的工具类.
1.特点:
- 对象按照插入的顺序存储.
- 同一个对象可以被重复插入,包括Null值.
- 支持根据下标随机快速访问,查询效率高,时间复杂度为:O(1).
- 容量不够时,会自动扩容.
- 删除跟插入元素时会涉及到数据的前移跟后移,效率不高,时间复杂度为:O(n).
- 只能存储引用数据类型.
- 线程不安全.
2.核心属性:
- Object[] elementData:用于实际存储数据的数组,默认初始容量10,当容量不够时,每次扩容0.5倍,即:新容量= 旧容量 + ( 旧容量>>1 );最小存储容量: 0(创建对象时,指定容量为0)最大存储容量: Integer.MAX_VALUE 即:2的31次方 - 1。
- int size:记录当前数组中存储数据的个数。
- int modCount:记录此列表在结构上被修改的次数,在Iterator(迭代器)中修改列表结构(新增,删除)时,会抛出:ConcurrentModificationException 异常;如果要在循环中删除某个元素,只能通过for循环来删除。