Arraylist类的使用:
语法:
ArrayList Object_Name = new ArrayList();
ArrayList Object_Name = new ArrayList(Initial_Capacity);
其中Base_Type必须是引用类型,通常时类类型;而不能是原语类型。
举例:
import java util.ArrayList;
ArrayList< String > list = new ArrayList < String > (20);
这段代码的意思是将list变成为Arraylist的名称,它存储String类的对象,并且初始容量是20个数据项(但这个容量是可变的,此时只不过是预先给它分配了20个容量空间而已,一般来说,我们巧妙的为它分配适合自身的内存,有助于程序的高效运行)。
注意:任何一个引用类型都可以作为Arraylist类的基本类型,任何一个类或接口类型也可以作为基本类型,但原语类型(如int,double)不能作为Arraylist的基本类型。
高尔夫分数程序:
import java.util.ArrayList;
import java.util.Scanner;
public class GolfScores
{
public static void main(String [] args)
{
ArrayList score = new ArrayList ();
System.out.println(“This program reads golf scoress and shows”);
System.out.println(“how much each differs from the average.”);
System.out.println(“Enter golf scores:”);
fillArrayList(score);
showDifference(score);
}
}
public static void fillArrayList(ArrayList a)
{
System.out.println(“Enter a list of nonnegative numbers.”);
System.out.println(“Mark the end of the list with a negative number.”);
Scanner keyboard = new Scanner (System.in);
double next;
int index = 0;
next = keyboard.nextDouble();
while(next > 0){
a.add(next);
next = keyboard.nextDouble();
}
}
public static double computerAverage(ArrayList a)
{
double total = 0;
for(Double element : a)
total = total + element;
int numberOfScores = a.size();
if(numberOfScores > 0){
return (total/numberOfScores);
}
else{
System.out.println(“Erroe:Trying to average 0 number:”);
System.out.println(“computerAverage returns 0.”);
return 0;
}
}
public static void showDifference(ArrayList a)
{
double average = computerAverage(a);
System.out.println(“Average of the ” + a.size() + “scores =” + average);
for(Double element : a)
System.out.println(element + “differs from average by” + (element - average));
}
ArrayList中的方法:
构造方法:
public ArrayList (int initialCapacity);
//用指定的基本类型(Base_Type)和初始容量(initialCapacity)创建一个空的ArrayList
返回索引处的元素:
public Base_Type get(int index);
//类似于返回数组的a[index],同样的,index不在定义范围之内的话会抛出IndexOutOfBoundException异常
添加元素的方法:
public boolean add(Base_Type newElement);
//将指定位置处的元素添加到主叫ArrayList的末尾,添加成功则返回true;
删除元素的方法:
public Base_Type remove(int index)
//删除并返回指定索引处的元素,同理,index不能越界,否则回抛出异常;
查找方法:
public boolean contain(Object target);
//返回第一个等于target的元素的索引。该方法使用equals方法测试是否相等,如果没有找到target,则返回-1。
内存管理:
public boolean isEmpty();
制作一个副本:
public Object toArray();
//返回一个包含该列表中的所有元素的值。元素顺序保持不变。
public Objec clone();
//返回主叫ArrayList的潜副本。但是必须注意的是该克隆不是一个独立的副本,随后对该克隆的改变可能会影响主叫对象,反之亦然(此处用到的概念是浅拷贝)。
遍历ArrayList元素:
for(Array_Base_Type Variable :ArrayList_Object)
Statement
实例:
for(Integer element : numberList)
element = 42;
//numberList是一个基本类型为Integer的ArrayList。这个循环将numberList的每个元素的值改为了42.(此处用到了自动装箱的概念!)