Java动态数组ArrayList

1.类结构:

·        java.lang.Object

·                         java.util.AbstractCollection

·                                         java.util.AbstractList

·                                                          java.util.ArrayList

·       All Implemented Interfaces:

Serializable, Cloneable, Iterable, Collection, List, RandomAccess

2.类概述:

List 接口的大小可变数组的实现。实现了所有可选列表操作,并允许包括null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于Vector 类,除了此类是不同步的。)

每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。

注意:此实现不是同步的。如果多个线程同时访问一个 ArrayList 实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步。(结构上的修改是指任何添加或删除一个或多个元素的操作,或者显式调整底层数组的大小;仅仅设置元素的值不是结构上的修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方法将该列表“包装”起来。这最好在创建时完成,以防止意外对列表进行不同步的访问:   

 

3.构造方法

Public Constructors

 

ArrayList(int capacity)

构造一个具有指定初始容量的空列表。

 

ArrayList()

构造一个初始容量为 0 的空列表。

 

ArrayList(Collection collection)

构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。

4.常用方法:

 

 

Public Methods

boolean

add(E object)

将指定的元素添加到此列表的尾部。

void

add(int index, E object)

 将指定的元素插入此列表中的指定位置。

boolean

addAll(Collection collection)

Adds the objects in the specified collection to this ArrayList.

boolean

addAll(int index, Collection collection)

从指定的位置开始,将指定 collection 中的所有元素插入到此列表中。

void

clear()

移除此列表中的所有元素。

boolean

contains(Object object)

如果此列表中包含指定的元素,则返回 true

void

ensureCapacity(int minimumCapacity)

如有必要,增加此 ArrayList 实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。

E

get(int index)

返回此列表中指定位置上的元素。

boolean

isEmpty()

Returns if this Collection contains no elements.

E

remove(int index)

移除此列表中指定位置上的元素。

boolean

remove(Object object)

移除此列表中首次出现的指定元素(如果存在)。

E

set(int index, E object)

用指定的元素替代此列表中指定位置上的元素。

int

size()

返回此列表中的元素数。

T[]

toArray(T[] contents)

    按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。

Object[]

toArray()

 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。

void

trimToSize()

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

5.ArrayList(动态数组)与静态数组的区别

1.访问效率:静态数组高于动态数组。

2.可扩充性:动态数组可以扩充大小,而静态数组不可以,当需要修改静态数组的大小时只能通过new关键字来创建一个新数组,所以在扩充元素方面动态数组效率比较高。

3.灵活性:动态数组支持set(替换), contains(是否包含某个元素) ,add(追加元素),remove(移除元素)但静态数组不支持。所以静态数组的灵活性大于动态数组。

 

 

 

你可能感兴趣的:(Android开发)