ArrayList的API

ArrayList是一个java.lang.Object类,继承java.util.AbstractCollection类,继承java.util.AbstractList类,继承java.util.ArrayList

实现的接口:

Serializable,Cloneable,Iterable,Collection,List,RandomAccess

直接子类:

AttributeList,RoleList和RoleUnresolvedList

ArrayList可以改变数组的长度,它实现了List接口,在数组中可以有任意值,包括NULL。ArrayList不仅实现了List接口,还提供了操作数组长度的方法,这个方法通常被用来在内部存储列表。ArrayList和Vector很相似,但是它不是同步的。

 

ArrayList的操作size、isEmpty、get、set、iterator和listIterator在常量时间内运行。add是一个线性时间的操作,也就是说增加N各元素需要时间O(n)。基本上所有的运作都是线性时间。ArrayList和LinkedList比较起来,常数因子要小很多。

 

每一个ArrayList的实例都有一个容量。这个容量表示ArrayList可以在List里面存储的数据的个数,至少和list的容量一样大。当元素加到ArrayList中的时候,ArrayList会自动扩容。

 

在使用ensureCapacity操作之前,该应用就会将ArrayList的容量增加。这样就会减少很多的元素重分配。

 

ArrayList是一个不同步的实现。当大量的线程同时实现ArrayList,至少有一个线程是修改了list的。ArrayList必须要在外部实现同步。对于ArrayList的操作,不管是增加还是减少其中的一个元素或者是改变支持的数组,一定是一个会改变元素的操作。这通常是通过一些封装的对象来同步实现的。如果,没有这样的对象存在,那么就会包装,并Colections.synchronizedList方法。这种方法是最好的,来防止list的不同步的意外发生。

List list = Collection.synchronizedList(new ArrayList(...));

该类的Iterator和listIterator方法返回的iterators是fail-fast的。如果iterator被创建之后,发生任何的结构改变,处理iterator自身的add操作,否则,都会抛出ConcurrentModificationException异常。因此,处理并发的情况时,iterator是快速清理的,就不会有在任意时间发生不确定情况的可能。

 

可见,iterator的快速清理机制是不能保证安全的,通常来说,在不同步的并发情况下,是非常难以来保证安全的。快速清理机制在力所能及的基础上会抛出ConcurrentModificationException异常。因此,写程序的时候,最好不要一来这个异常抛出来保证安全:iterator的fail-fast机制只能够用来检测bug。

ArrayList是一个Java Collection Framework的一个成员。

 

ArrayList是从JDK1.2就有了。

 

构造器总结:

ArrayList():构造一个初值为空,容量为10 的list。

ArrayList(Collection c):构造一个元素包含collection的list,顺序按照iterator来进行。c表示这个集合,需要用来代替原来list中的元素。

ArrayList(int initialCapacity):构造一个指定容量的空数组。

 

方法总结:

boolean

add(E e)

在ArrayList数组的最后增加元素

void

add(int index,E element)

在index处,插入元素

boolean

addAll(Collection Collection c)

将集合中的元素依次都增加到list的最后

void

addAll(int index, Collection Collection c)

将集合中的元素以此增加在指定的index处

void

clear()

将list中的元素清除

Object

clone()

复制ArrayList中的元素

boolean

contains(Object o)

判断list中是否有对象o

void

ensureCapacity(int minCapacity)

增加ArrayList中的容量,如果有需要,确保它至少可以满足最小容量

void

forEach(Consume action)

遍历迭代器,直到抛出异常

E

get(int index)

返回在list的特定位置的对象

int

indexOf(Object o)

返回当前第一次出现的元素的index,如果不存在返回-1

boolean

isEmpty()

返回不存在该对象就返回true

Iterator

iterator()

按照正确的顺序返回一个iterator

int

lastIndexOf(Object o)

返回最后一次出现在list中的对象的index,如果不存在就返回-1

ListIterator

listIterator()

 

ListIterator listIterator(int index)
E remove(int index)
boolean remove(Object o)
boolean removeAll(Consume c)
boolean removeIf(Predicate fileter)
protected void removeRange(int fromIndex,int toIndex)
void

replaceAll(UnaryOperator operator)

将运算符作用在每一个元素上的结果,替换列表中的每一个元素

boolean

retainAll(Consume c)

只保留此列表中包含在指定集合中的元素

E

set(int index,E element)

用指定元素替换列表中指定的位置的元素

int

size()

返回列表中的元素的数量

void

sort(Comparator c)

根据指定比较其中的顺序对该列表中的元素进行排序

Spliterator

spliterator() 

在此列表中的元素上创建延迟绑定和故障快速Spliterator

List

subList(int fromIndex,int toIndex)

返回列表中的指定的包含的fromIndex和包含的toIndex之间的部分的视图

Object[]

toArray(T[] a)

返回一个数组,该数组按适当的顺序(从第一个元素到最后一个元素)包含列表中的所有元素。返回的数组是安全的买这个列表不维护对它的引用,这个方法必须分配一个新的数组,因此,调用者可以自由地修改返回的数组。同Array.asList(Object[])

T[]

toArray(T[] a)

返回一个数组,该数组包含列表中按正确顺序排列的所有元素(从第一个元素到最后一个元素);返回数组的运行时类型是指定数组的运行时类型。如果列表符合指定的数组,则有剩余空间(即,数组中的元素比列表中的元素多),集合结束后数组中的元素被设置为null。这对于确定列表的长度很有用。T表示包含集合的数组的运行时的类型。

void

trimToSize()

将ArrayList实例的容量调整为列表的当前大小。

 

方法继承自java.util.AbstractList:equals,hashCode

方法继承自java.util.AbstractCollection:containsAll,toString

方法继承自java.lang.Object:finalize,getClass,notify,notifyAll,wait的三种方法

方法继承自java.util.List:containsAll, equals, hashCode

方法继承自java.util.Collection:parallelStream,stream

 

 

 

 

 

 

 

你可能感兴趣的:(Java类API)