Java集合框架之ArrayList浅析
一、ArrayList综述:
位于java.util包下的ArrayList是java集合框架的重要成员,它就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,jdk1.8中对ArrayList的定义如下
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable
可见ArrayList继承自AbstractList,主要实现了List接口
ArrayList底层采用数组存储元素的,所以ArrayList适合查询,不适合频繁的随机增删元素
可以说 ArrayList 是我们使用最多的 List 集合,它有以下特点:
- 容量不固定,想放多少放多少(当然有最大阈值,但一般达不到)
- 有序的(元素输出顺序与输入顺序一致)
- 元素可以为 null
- 效率高
- size(), isEmpty(), get(), set() iterator(), ListIterator() 方法的时间复杂度都是 O(1)
- add() 添加操作的时间复杂度平均为 O(n)
- 其他所有操作的时间复杂度几乎都是 O(n)
- 占用空间更小
- 对比 LinkedList,不用占用额外空间维护链表结构
二、方法摘要:
2.1构造方法摘要:
ArrayList() 构造一个初始容量为 10 的空列表。 |
ArrayList(Collection<? extends E> c) 构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。 |
ArrayList(int initialCapacity) 构造一个具有指定初始容量的空列表。 |
2.2方法摘要
boolean |
add(E e) 将指定的元素添加到此列表的尾部。 |
|
void |
add(int index, E element) 将指定的元素插入此列表中的指定位置。 |
|
boolean |
addAll(Collection<? extends E> c) 按照指定 collection 的迭代器所返回的元素顺序,将该 collection 中的所有元素添加到此列表的尾部。 |
|
boolean |
addAll(int index, 从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。 |
|
void |
clear() 移除此列表中的所有元素。 |
|
Object |
clone() 返回此 ArrayList 实例的浅表副本。 |
|
boolean |
contains(Object o) 如果此列表中包含指定的元素,则返回 true。 |
|
void |
ensureCapacity(int minCapacity) 如有必要,增加此 ArrayList 实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。 |
|
E |
get(int index) 返回此列表中指定位置上的元素。 |
|
int |
indexOf(Object o) 返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回 -1。 |
|
boolean |
isEmpty() 如果此列表中没有元素,则返回 true |
|
int |
lastIndexOf(Object o) 返回此列表中最后一次出现的指定元素的索引,或如果此列表不包含索引,则返回 -1。 |
|
E |
remove(int index) 移除此列表中指定位置上的元素。 |
|
boolean |
remove(Object o) 移除此列表中首次出现的指定元素(如果存在)。 |
|
protected |
removeRange(int fromIndex, 移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。 |
|
E |
set(int index, E element) 用指定的元素替代此列表中指定位置上的元素。 |
|
int |
size() 返回此列表中的元素数。 |
|
Object[] |
toArray() 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。 |
|
|
toArray(T[] a) 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。 |
|
void |
trimToSize() 将此 ArrayList 实例的容量调整为列表的当前大小。 |