在前面我們學(xué)習(xí)了數(shù)組,數(shù)組可以保存多個(gè)元素,但在某些情況下無法確定到底要保存多少個(gè)元素,此時(shí)數(shù)組將不再適用,因?yàn)閿?shù)組的長(zhǎng)度不可變。例如,要保存一個(gè)學(xué)校的學(xué)生,由于不停有新生來報(bào)道,同時(shí)也有學(xué)生畢業(yè)離開學(xué)校,這時(shí)學(xué)生的數(shù)目很難確定。為了保存這些數(shù)目不確定的元素,JDK中提供了一系列特殊的類,這些類可以存儲(chǔ)任意類型的元素,并且長(zhǎng)度可變,統(tǒng)稱為集合。
ArrayList集合是程序中最常見的一種集合,它屬于引用數(shù)據(jù)類型(類)。在ArrayList內(nèi)部封裝了一個(gè)長(zhǎng)度可變的數(shù)組,當(dāng)存入的元素超過數(shù)組長(zhǎng)度時(shí),ArrayList會(huì)在內(nèi)存中分配一個(gè)更大的數(shù)組來存儲(chǔ)這些元素,因此可以將ArrayList集合看作一個(gè)長(zhǎng)度可變的數(shù)組。
創(chuàng)建對(duì)象:與其他普通的引用數(shù)據(jù)類型創(chuàng)建方式完全相同,但是要指定容器中存儲(chǔ)的數(shù)據(jù)類型:
ArrayList<要存儲(chǔ)元素的數(shù)據(jù)類型> 變量名 = new ArrayList<要存儲(chǔ)元素的數(shù)據(jù)類型>();
- 集合中存儲(chǔ)的元素,只能為<>括號(hào)中指定的數(shù)據(jù)類型元素;
- “<要存儲(chǔ)元素的數(shù)據(jù)類型>”中的數(shù)據(jù)類型必須是引用數(shù)據(jù)類型,不能是基本數(shù)據(jù)類型;
下面給出8種基本數(shù)據(jù)類型所對(duì)應(yīng)的引用數(shù)據(jù)類型表示形式:

我們通過舉幾個(gè)例子,來明確集合的創(chuàng)建方式:
- 存儲(chǔ)String類型的元素
ArrayList<String> list = new ArrayList<String>(); - 存儲(chǔ)int類型的數(shù)據(jù)
ArrayList<Integer> list = new ArrayList<Integer>(); - 存儲(chǔ)Phone類型的數(shù)據(jù)
ArrayList<Phone> list = new ArrayList<Phone>();
集合中常用方法

import java.util.ArrayList;
public class ArrayListDemo01 {
public static void main(String[] args) {
// 創(chuàng)建ArrayList集合
ArrayList<String> list = new ArrayList<String>();
// 向集合中添加元素
list.add("stu1");
list.add("stu2");
list.add("stu3");
list.add("stu4");
// 獲取集合中元素的個(gè)數(shù)
System.out.println("集合的長(zhǎng)度:" + list.size());
// 取出并打印指定位置的元素
System.out.println("第1個(gè)元素是:" + list.get(0));
System.out.println("第2個(gè)元素是:" + list.get(1));
System.out.println("第3個(gè)元素是:" + list.get(2));
System.out.println("第4個(gè)元素是:" + list.get(3));
}
}
ArrayList集合相當(dāng)于是一個(gè)長(zhǎng)度可變的數(shù)組,所以訪問集合中的元素也是采用索引方式訪問,第一個(gè)元素存儲(chǔ)在索引0的位置,第二個(gè)元素存儲(chǔ)在索引1的位置,依次類推。
集合的遍歷
通過集合遍歷,得到集合中每個(gè)元素,這是集合中最常見的操作。集合的遍歷與數(shù)組的遍歷很像,都是通過索引的方式,集合遍歷方式如下:
ArrayListDemo02.java
1 import java.util.ArrayList;
2 public class ArrayListDemo02 {
3 public static void main(String[] args) {
4 //創(chuàng)建ArrayList集合
5 ArrayList<Integer> list = new ArrayList<Integer>();
6 //添加元素到集合
7 list.add(13);
8 list.add(15);
9 list.add(22);
10 list.add(29);
11 //遍歷集合
12 for (int i = 0; i < list.size() ; i++) {
13 //通過索引,獲取到集合中每個(gè)元素
14 int n = list.get(i) ;
15 System.out.println(n);
16 }
17 }
18 }
上述代碼中,第5行定義了一個(gè)可以存儲(chǔ)int元素的集合;第7-10行,實(shí)現(xiàn)將int類型數(shù)值存儲(chǔ)到集合中;第12-16行,實(shí)現(xiàn)遍歷集合元素。這里要強(qiáng)調(diào)一點(diǎn),get方法返回值的類型為集合中元素的類型。