ArrayList類別實作了List介面,List介面是Collection介面的子介面,主要增加了根據索引取得物件的方法。
ArrayList使用陣列實作List介面,所以對於快速的隨機取得物件來說,使用ArrayList可以得到較好的效能,不過在移除物件或插入物件時,ArrayList就比較慢(使用 LinkedList 在這方面就好的多)。
來看看一個ArrayList的範例:
package onlyfun.caterpillar; import java.util.*; public class ArrayListDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List<String> list = new ArrayList<String>(); System.out.println("輸入名稱(quit結束)"); while(true) { System.out.print("# "); String input = scanner.next(); if(input.equals("quit")) break; list.add(input); } System.out.print("顯示輸入: "); for(int i = 0; i < list.size(); i++) System.out.print(list.get(i) + " "); System.out.println(); } }
在 J2SE 5.0 之後新增了泛型(Generic)的功能,使用物件容器時建議容器中將儲存的物件型態,如此您的物件在存入容器會被限定為您所宣告的型態,而取出時,也不至於失去原來的型態資訊,可以避免型態轉換時的問題。
使用add()方法可以將一個物件加入ArrayList中,使用size()方法可以傳回目前的ArrayList的長度,使用get()可以傳回指定索引處的物件,使用toArray()可以將ArrayList中的物件轉換為物件陣列。
以下是執行結果:
輸入名稱(quit結束)
# Justin
# caterpillar
# momor
# quit
顯示輸入: Justin caterpillar momor
|
您可以使用get()方法指定索引值取出物件,然而如果您的目的是要循序取出容器中所有的物件,則您可以使用Iterator類,Iterator類實作
Iterator
模式,實際來看個例子:
package onlyfun.caterpillar; import java.util.*; public class ArrayListDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List<String> list = new ArrayList<String>(); System.out.println("輸入名稱(quit結束)"); while(true) { System.out.print("# "); String input = scanner.next(); if(input.equals("quit")) break; list.add(input); } Iterator iterator = list.iterator(); while(iterator.hasNext()) { System.out.print(iterator.next() + " "); } System.out.println(); } }
iterator()方法會傳回一個Iterator物件,這個物件提供的遍訪的方法,hasNext()方法測試Iterator中是否還有物件,如果
有的話,可以使用next()取出。
事實上,在J2SE 5.0您也不必須使用iterator()了,使用增強的for迴圈可以直接遍訪List的所有元素,例如:
package onlyfun.caterpillar; import java.util.*; public class ArrayListDemo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); List<String> list = new ArrayList<String>(); System.out.println("輸入名稱(quit結束)"); while(true) { System.out.print("# "); String input = scanner.next();
if(input.equals("quit")) break; list.add(input); } for(String s : list) { System.out.print(s + " "); } System.out.println(); } }
|