https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html
List接口的可调整大小的实现。实现所有可选的list操作,可包含所有的元素,包括null。除了使用了List接口,这个类还提供了方法来操作用来内部储存这个集合的数组的大小。(这个类大概等同于vector,除了它是非同步的。)
size,isEmpty, get , set , iterator , and listIterator,这几个操作运行在常数时间内(即O(1))。add操作是O(N)的。其他所有方法的操作都是线性时间。 常数因数比起LinkedList的实现是低的(即比后者快)。
每一个Arraylist实例都有一个容量。容量是用来储存元素集合的数组的大小。最小时和list大小一样。当增加元素进入这个Arraylist中时,容量会自动增长。增长政策的细节并没有超过事实,增加一个元素需要固定的amortized time cost(根据维基百科的解释,这个是常数时间的意思大概)
通过使用ensureCapacity操作,一个应用,在增加一大群元素之前,可以增加Arraylist实例的容量。这可能可以减少增加的重新分配的量。
注意这个是显示非同步的,如果多个线程同时访问一个Arraylist,至少一个现场修改了arraylist的结构,这必须被显性的同步。(一个结构性的修改是任何增加删除一个或多个元素,或是显性的修改背后的数组,仅仅设置元素的值并不算是结构性的修改。)这通常是通过同步一些包装这个集合的object。如果没有这样的object存在,这个集合应该用 Collections.synchronizedList
方法封装。这最好在创建的时候完成,来防止意外的对集合的非同步访问。
使用的接口s
Serializable, Cloneable, Iterable<E>, Collection<E>, List<E>, RandomAccess
网友评论