介绍ArrayList还是先从他的继承关系来说吧!我认为继承关系的理解也是很重要的,在需要用到向上和向下转型的时候,体会最为明显。好吧,闲话少叙。让我们认识这个类吧!
继承关系:(自顶向下)
-
- java.lang.Object
- java.util.AbstractCollection<E>
- java.util.AbstractList<E>
- java.util.ArrayList<E>
- java.lang.Object
-
-
- Serializable,
Cloneable,
Iterable<E>,
Collection<E>,
List<E>,
RandomAccess
- 直接子类:
- 继承关系:
-
AbstractList<E>
- · 实现接口:
-
List<E>, RandomAccess, Cloneable, Serializable
-
ArrayList<E>背景介绍完了,那这回开始入正题,介绍他自己。ArrayList<E>是一个可变的数组,实现了List接口。其所有的对象值可以为空。类提供了很多对于内部对象的处理方法。但是不同于Vector,该类是不同步的。
- 多个线程在同时访问ArrayList<E>对象或同时操作时,为了避免数据的不一致性,通常情况下使用Collections.synchronizedList来保持数据一致。使用如下所示:
- List list = Collections.synchronizedList(new ArrayList(...));
-
构造函数一共有三种形式:
-
ArrayList();//构造初始容量为 10 的空列表
ArrayList(Collection<? extends E> c);//构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的
ArrayList(int initialCapacity);//使用initialCapacity的大小初始化列表
-
ArrayList();//构造初始容量为 10 的空列表
-
常用方法列表
-
ArrayList<E>背景介绍完了,那这回开始入正题,介绍他自己。ArrayList<E>是一个可变的数组,实现了List接口。其所有的对象值可以为空。类提供了很多对于内部对象的处理方法。但是不同于Vector,该类是不同步的。
-
AbstractList<E>
-
返回类型 | 方法和描述 |
---|---|
boolean | add(E e)
将指定的元素添加到此列表的末尾
|
void | add(int index, E element)
在列表index处添加元素element,index点后的数据整体后移
|
boolean | addAll(Collection<? extends E> c)
所有追加指定collection中的元素添加到此列表的末尾
|
boolean | addAll(int index, Collection<? extends E> c)
在指定的位置,插入所有指定集合中的元素插入此列表
|
void | clear()
清空列表中的所有元素
|
Object | clone()
返回一个浅复制实例
|
boolean | contains(Object o)
判断列表中是否包含对象o
|
void | ensureCapacity(int minCapacity)
增加ArrayList实例的容量
|
E | get(int index)
返回列表index位置的实例
|
int | indexOf(Object o)
返回此列表中的指定元素第一次出现的索引,如果此列表中不包含该元素返回-1
|
boolean | isEmpty()
判断列表是否为空
|
Iterator<E> | iterator()
返回一个迭代器在此列表中正确序列中的元素。
|
int | lastIndexOf(Object o)
返回此列表中的指定元素的最后一个匹配项的索引,如果此列表中不包含该元素返回-1
|
ListIterator<E> | listIterator()
返回一个列表迭代器在此列表中的元素(按适当顺序)
|
ListIterator<E> | listIterator(int index)
从列表中的指定位置返回一个列表迭代器在此列表中的元素(按适当顺序)
|
E | remove(int index)
移除列表中指定位置的实例
|
boolean | remove(Object o)
移除对象实例o
|
boolean | removeAll(Collection<?> c)
从这个列表中移除所有包含在指定集合中的元素
|
protected void | removeRange(int fromIndex, int toIndex)
删除在[fromIndex,toIndex]之间的数据
|
boolean | retainAll(Collection<?> c)
保留那些包含在指定集合中列出的元素
|
E | set(int index, E element)
替换在此列表中指定位置的元素。
|
int | size()
返回列表中包含元素的数量
|
List<E> | subList(int fromIndex, int toIndex)
截取 [fromIndex,toIndex] 之间的数据并返回
|
Object[] | toArray()
返回包含所有在此列表中正确的序列中元素的数组(从第一个到最后一个元素)
|
<T> T[] | toArray(T[] a)
返回包含所有在此列表中正确的序列中的元素(从第一个到最后一个元素)数组; 返回数组的运行时类型是指定数组
|
void | trimToSize()
去掉空的参数
|