明天简略说下ArrayList,底层实现为数组
transient Object[] elementData;
减少删除办法都是通过数组copy办法,之后再减少size大小
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
以下为ArrayList的所有办法总结了下
ensureCapacity(int minCapacity)办法,扩大ArrayList外部数组的空间大小
size()办法,获取ArrayList的理论列表大小,而不是外部数组空间大小
isEmpty()办法,判断ArrayList的理论大小是否为空
contains(Object o)办法,判断ArrayList中是否存在该Object,外部理论调用indexOf办法
indexOf(Object o)办法,获取Object在ArrayList中的指针地位(第一个雷同的Object),循环遍历所有数组挨个查找。
lastIndexOf(Object o)办法,获取Object在ArrayList中的最初一个指针地位(最初一个雷同的Object),循环遍历所有数组挨个查找。
clone()办法,将原有ArrayList克隆一份给新建设的ArrayList,然而列表外部的数组中的信息不变
toArray()办法,将原有ArrayList转换为数组
toArray(T[] a)办法,将原有ArrayList转换为指定类型的数组
get(int index)办法,获取ArrayList中指定指针的内容
set(int index, E element)办法,设定ArrayList中指定指针地位的内容
add(E e)办法,在ArrayList尾部减少内容
add(int index, E element)办法,在ArrayList制订指针为减少内容,下一个指针内容向后顺移,为数组新增一个空间,通过System.arraycopy一一复制指针前面每一个到下一个地位
remove(int index)办法,删除在ArrayList指定指针的内容,通过System.arraycopy一一复制指针前面每一个到上一个地位,将最初一个地位设置为null
remove(Object o)办法,删除在ArrayList中的第一个雷同的Object
clear()办法,革除ArrayList的内容
addAll(Collection<? extends E> c)办法,将新的列表全副减少到原有ArrayList的尾部
addAll(int index, Collection<? extends E> c)办法,将新的列表全副减少到原有ArrayList的指定指针地位,剩下的向后顺移
removeAll(Collection<?> c)办法,将所有的传入列表的内容从原有ArrayList中删除
retainAll(Collection<?> c)办法,将所有的传入列表的内容从原有ArrayList中保留,其余删除
listIterator(int index)办法,在指定指针地位开始创立ListIterator
listIterator()办法,在头开始创立ListIterator
iterator()办法,在结尾穿件Iterator
subList(int fromIndex, int toIndex)办法,从开始指针到完结指针创立一个新的SubList,理论不是ArrayList,而是将SubList的开始指针指向ArrayList的fromIndex地位,SubList的完结指针指向ArrayList的toIndex地位。
foreach办法,JDK1.8新增的循环获取ArrayList的值
arrayList.forEach(x -> System.out.println(x));
removeIf办法,JDK1.8新增通过lamada表达式删除合乎规定的项
arrayList.removeIf(x -> x.equals("1")|| x.equals("2"));
replaceAll办法,通过lamada表达式替换合乎规定的项
arrayList.replaceAll(x->x.equals("3")?"三":x);
ArrayListSpliterator
将原有的ArrayList依照指针指向的起始index和完结index来拆分成新的ArrayList(理论类型为ArrayListSpliterator),但不可批改。