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); Listlist = new ArrayList (); 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); Listlist = new ArrayList (); 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); Listlist = new ArrayList (); 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(); } }