他是List接口的實現類。ArrayList類相當于是一個動態數組。
Methods:
1、? void add (Object obj)
往ArrayList的對象里增加一個元素
2、?
set
(int?index,
Object
?element)
用指定的元素替代此列表中指定位置上的元素。
3、?
int size
()
獲得ArrayList的對象中元素的個數。
4、?
get
(int index)
返回ArrayList的對象中索引為index的元素。
5、?
Object
[]
toArray
()
將ArrayList的對象中的元素返回到一個對象數組中。
PS
:Arrays.asList(Object[] objs);
???
返回一個受指定數組支持的固定大小的列表。

?2

?3

?4

?5

?6

?7


?8

?9

10

11

12

13

14

15

16

????
這里的L是通過Arrays.asList返回一個接口。這時候L的長度就固定不能再變了,不能給L添加元素了。但是可以通過set方法改變L中指定元素的值。
?????
6、?
iterator()
返回一個迭代器。所有繼承Collection接口的接口或者這些接口的實現類,都有這個方法。通過List接口對象返回的迭代器沒有實現iterator接口中的remove方法。凡是沒有實現iterator接口中的remove方法,都會拋出一個
UnsupportedOperationException
(不支持的操作)異常。如:

2

3

4

5

6

7

8

9

PS
:迭代器的作用:
??
他可以以一種通用的方式去訪問集合中的所有元素。在ArrayList類中可以通過get方法去訪問,但是有些集合的實現類中并沒有get方法。而我們知道,所有繼承Collection接口的接口或者這些接口的實現類,都可以通過iterator()返回一個迭代器,那么我們就可以通過迭代器這種通用的方式去訪問集合中的所有元素了。訪問方法如下:

?2

?3

?4

?5

?6

?7

?8

?9

10

11

12



13

14

15

ArrayList
底層采用數組完成,而LinkedList則是以一般的雙向鏈表(double-linked list)完成,其內每個對象除了數據本身外,還有兩個引用,分別指向前一個元素和后一個元素。
如果我們經常在List的開始處增加元素,或者在List中進行插入和刪除操作,我們應該使用LinkedList,否則的話,使用ArrayList將更加快速。
這兩個類都不是同步的,因此他們的效率也比較高。如果要實現同步,可以使用Vector類,Vector類中有一些繼承的操作,使用的時候要小心,如果不實現同步一般都不用Vector類。還可以用Collections類的
synchronized
相關方法實現同步,不過效率沒有
Vector
類高。