【Java Learning】泛型类ArrayList 的用法介绍

时间:2023-02-05 23:14:41

泛型类ArrayList 的用法介绍


         学过C++的人都知道,C++中的vector容器是一个非常有用的工具,与之类似,Java中有一个Vector类,不过它用得很少,我们更青睐于功能更加强大泛型类ArrayList.

    为何而生?在程序设计中,有时候我们需要定义一个数组,但却不确定数据的大小,在Java中我们可以通过new方法来定义,如:

public void setSpace(int actualSize)
{
int[] array=new int[actualSize];
//.......
}
    不过,用new方法也有缺点,一旦用new方法创建了数组,想要在改变其大小就不容易了,针对这个问题,Java提供ArrayList类,它使用起来和数组有点像,但是强大很多,在添加和删除元素的时候,可以自动调节数组的容量而无需任何代码。ArrayList是一个采用类型参数(type parameter)的泛型类(generic class),其存储的元素为类对象,为了指明对象类型,需要采用一对尖括号将类名括起来,由于尖括号形似菱形,故这种表达方法称为“菱形语法”。一些常用的方法列举如下:

public static void main(String[] args) 
{
//1构造一个空数组列表ArrayList<T>(),可赋予存储能力,但不能分配空间
ArrayList<Integer> temp1=new ArrayList<Integer>();//存储能力未知
ArrayList<Integer> temp2=new ArrayList<Integer>(5);//存储能力为5,但可以改变
ArrayList<ArrayList<Integer>> temp3=new ArrayList<ArrayList<Integer>>();
//2虽然用new操作符为数组列表temp2赋予了容量,但它们的输出都为0
System.out.println(temp1.size());//输出0
System.out.println(temp2.size());//输出0
System.out.println(temp3.size());//输出0

//3初始化temp2,其空间将增大为10,这个数字可随意设置
for(int i=0;i<10;i++)
temp2.add(0);
System.out.println(temp2.size());//输出15

//4二维数组列表temp3的初始化方式,借助一维数组列表初始化
int length=8;//控制二维数组列表行数
for(int i=0;i<length;i++)
temp3.add(temp2);
System.out.println(temp3);//输出8行10列的0数组

//5访问数组列表元素
System.out.println(temp2.get(5));//访问一维数组列表temp2第6个元素
System.out.println(temp3.get(5).get(5));//访问二维数组列表temp3第6行6列的元素

//6设置数组列表元素
System.out.println(temp2.set(5, 100));//设置一维数组列表temp2第6个元素为100
System.out.println(temp3.get(5).set(5, 200));//设置二维数组列表temp3第6行6列的元素为200

//7删除数组列表元素
temp2.remove(5);
System.out.println(temp2.get(5));//输出0

//8检查数组列表中是否存在指定元素(对象)contains(Object o)
temp2.set(6, 123);
System.out.println(temp2.contains(123));//输出true

}