java.util.ArrayList是一个列表类,它是用来存放其他Java对象,内部是通过数组来实现的。
只要是java对象就可以往ArrayList里面放
java.util.ArrayList内部是通过数组来实现的:
当数组容量不够的时候,会对数组容量进行扩容可以通过数组下标来快速的访问ArrayList里面的元素
当新增或者删除ArrayList里面的元素时,可能会涉及到移位操作可以截取数组的子数组操作.
定义如下:
1 public class ArrayList<E> extends AbstractList<E>
2 implements List<E>, RandomAccess, Cloneable, java.io.Serializable{
3 //fields
4
5 //constructor
6
7 //methods
8
9 //inner class 'Itr'
10
11 //inner class 'ListItr'
12
13 //inner class 'SubList'
14 }
java.util.ArrayList的常见属性:
//序列号
private static final long serialVersionUID = 8683452581122892189L;
//ArrayList实际存储元素的地方
private transient Object[] elementData;
//ArrayList中存储的元素个数
private int size;
//ArrayList最多存储元素的个数
private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8;
//fast-fail失败机制标记
protected transient int modCount = 0;
构造方法:
第一种:默认构造方法(无参数构造方法)
public ArrayList()
第二种: 带初始列表容量大小参数的构造方法
public ArrayList(int initialCapacity)
第三种:带初始化子列表参数的构造方法
public ArrayList(Collection<? extends E> c)
常用方法:
修改操作:
boolean add(E e) 将指定的元素添加到此列表的尾部
void add(int index,E element) 将指定的元素插入此列表中的指定位置
E remove(int index) 移除此列表中指定位置上的元素
boolean remove(Object o) 移除此列表中首次出现的指定元素
E set(int index,E element) 用指定的元素替代此列表中指定位置上的元素
批量操作
boolean addAll(Collection<? extends E> c) 将子集合c中的元素添加到此集合中
boolean addAll(int index,Collection<? extends E> c) 将子集合c中的元素添加到此集合中的index位置开始处
void clear() 清空此集合
protected void removeRange(int fromIndex,int toIndex) 移除集合中索引在fromIndex(包括)和toIndex(不包括)之间的所有元素
public boolean removeAll(Collection<?> c) 移除此collection中那些也包含在指定collection中的所有元素
public boolean retainAll(Collection<?> c) 仅保留在子集合c中那些也包含在此集合中的元素
查询操作
boolean contains(Object o) 判断集合中是否包含了元素o
E get(int index) 返回此集合中index位置上的元素
int indexOf(Object o) 返回此集合中首次出现元素o的位置
boolean isEmpty() 判断此集合是否为空
int lastIndexOf(Object o) 返回此集合中最后一次出现元素o的位置
int size() 返回此集合中元素的个数
其他操作
Object clone() 返回此列表实例的浅复制
void ensureCapaCity(int minCapacity) 如有必要,增加此列表实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数
void trimToSize() 将此列表实例的容量调整为列表的当前大小
数组操作
Object[] toArray() 按适当顺序返回包含此列表中所有元素的数组
<T> T[] toArray(T[] a) 按适当顺序返回包含此列表中所有元素的数组
Iterator和子List操作
ListIterator<E> listIterator(int index) 返回列表的ListIterator实例
ListIterator<E> listIterator() 返回列表的ListIterator实例
Iterator<E> iterator() 返回列表的Iterator实例
List<E> subList(int fromIndex, int toIndex) 返回列表的子列表
ArrayList遍历方法:
支持三种遍历方式:
第一种: 通过索引值去遍历(随机遍历)(效率最好)
第三种: 通过增强的for循环去遍历(效率最低)
第三种: 通过迭代器去遍历(效率次之)