泛型数组列表
在Java中我们定义了一个数组就要确定数组的大小,而一担确定了数组的大小之后想改变数组大小就很麻烦了,所以Java为我们提供了ArrayList类,这是一个采用类型参数的泛型类。为了指定数组存储对象的类型,我们需要一对尖括号将类名括起来加在后面。例如
class Person//定义一个Person类
{
privateString name;
privateint age;
publicPerson(String name,int age)
{
this.name=name;
this.age=age;
}
publicvoid SayHello()//定义一个方法
{
System.out.println("我是"+name+"我的年龄是"+age);//输出姓名和年龄
}
} 有这样一个Person类,我们定义一个泛型数组列表,
ArrayList<Person>Temp = new ArrayList<Person>();
使用add方法可以将元素添加到数组列表中。例如:
Temp.add(newPerson(“Jim”,14);
Temp.add(newPerson(“Lucy”,14);
数组列表管理着对象引用的一个内部数组。最终,数组的空间可能被用尽。这是该体现泛型数组优势的时候了,如果调用add且内部数组已经满了,数组列表就将自动的创建一个更大的数组,并将所有的对象从小的数组中拷贝到哪个更大的数组中。
如果我们能预测数组的大概大小,就可以在填充数组之前调用ensureCapacity方法:
Temp.ensurCapacity(100);
这个方法将分配一个包含100个对象的数组。
也可以将数组大小传给ArrList构造函数,
ArrayList<Person>Temp=new ArrayList<Person>(100);
不过要强调一点就是泛型列表的大小与数组的大小有重要的区别,如果数组有100个容量空间就分配100个存储位置用来使用。而泛型列表则是有能保存100个数据的的潜力,所以在最初在完成初始化构造时,数组列表根本就补焊任何元素。
接下来介绍一个用来查询数组元素数目的函数:siae
Temp.size();
这个函数返回数组列表的实际元素数目。
一旦确认了数组列表的大小,就可以调用trimToSize方法。这个方法将存储区域的大小调整为当前元素的数量所需要的存储空间数目。垃圾回收器会将多余的的空间释放。
1. 访问数组列表元素
使用get和set方法实现访问或者改变数组元素的操作,
例如要设置第i个元素,可以使用;
Temp.set(i,harry);
只有i小于或者等于数组列表时才能够调用Temp.set(i,harry);因为set方法是改
变数组列表元素,而add方法才是增加数组列表元素;
使用get方法获取数组列表元素:
Persone=Temp.get(i);
除了在数组尾部追加外还可以在数组中插入数据,
intn=Temp.size/2;
Temp.add(n,e);
插入时在插入元素后的所有元素会向后移动一位;
同样的也可以删除一个数组中的元素,
Persone=Temp.remove(n);
同理n后的所有元素都要向前移动一位,
最后给大家提供一示例:
import java.util.*;
class Person//定义一个Person类
{
private String name;
private int age;
public Person(String name,int age)
{
this.name=name;
this.age=age;
}
public void SayHello()//定义一个方法
{
System.out.println("我是"+name+"我的年龄是"+age);//输出姓名和年龄
}
}
class ArrayListDemo
{
public static void main(String [] arge)
{
ArrayList<Person> Temp = new ArrayList<Person>();
Temp.add(new Person("Jim",14));
Temp.add(new Person("Lucy",15));
Temp.add(new Person("Lily",13));
for(int i=0;i<Temp.size();i++)
{
Temp.get(i).SayHello();
}
}
}