在十二章学习爬虫的示例里用到了ArrayList,发现对这个很不熟悉。再捋一遍
ArrayList 位于:java.util 包中
ArrayList 类来存储不限定个数的对象,可以指定一个具体的类型来替换E
...
{
...
ArrayList<String> cityList = new ArrayList<>();
// <>中的元素必须是一种对象,不能是int,double..,可以是Integer.
cityList.add("London");
cityList.add("Paris");
...
cityList.add("Miami");
System.out.println(cityList.Size() + cityList.contains("Miami") +cityList.indexOf("London") + cityList.remove("Miami");
System.out.println(cityList.toString()); // == System.out.println(cityList);a
}
和数组的区别:
// 存储整数的数组列表。
ArrayList<Integer> list = new ArrayList<>();
import java.util.ArrayList;
import java.util.Scanner;
public class Arraytest {
public static void main(String[] args) {
// using ArrayList
ArrayList<Integer> list = new ArrayList<>();
Scanner input = new Scanner(System.in);
System.out.println("enter integers(end with 0):");
int value;
do {
value = input.nextInt();
if(!list.contains(value) && value!=0) //对于每个值,如果不在列表中,则将其添加到列表中
list.add(value);
}while(value!=0);
for(int i=0;i<list.size();i++)
System.out.print(list.get(i) + " ");
}
}
上述程序,也可使用数组进行存储。然而,使用ArrayList 来实现该程序将更简单,有以下两个原因。
- ArrayList 的大小是灵活的,所以无须提前给定它的大小。而当创建一个数组时,它的大小必须给定。
- ArrayList 包含许多有用的方法。比如,可以使用contains 方法来测试某个元素是否在列表中。如果使用数组,则需要编写额外代码来实现该方法。
数组列表中的元素也可以使用foreach 循环来进行遍历,语法如下:
for (elementType element: arrayList){
// Process the element
}
//example
for (int number: list)
System.out.print(number + " ");
从数组中创建一个数组列表的例子:
String[] array = {"red","green","blue"};
ArrayList<String> list = new ArrayList<>(Arrays.asList(array)); //静态方法asList返回一个列表
从一个数组列表来创建一个对象数组:
String[] array1 = new String[list.size()];
list.toArray(array1); //将list中的内容复制到array1