class ArrayList

幸运的是,Java已经提供了一个class,用于处理希望给空间不足的数组添加更多元素或是数组已分配空间变得比实际需求大很多这些情况。class的名字叫做ArrayList。它用数组的方式实现interface List,并让底层的数组按需增加或缩减空间。这同时也意味着class ArrayList里包括了在interface List中定义的那些method的代码。

事实上,Java提供好几个interface List的不同实现(为interface中的abstract method提供代码)。它们包括:ArrayListLinkedListStackVector。对于AP计算机科学考试而言,你只需要掌握ArrayList

import语句

interface Listclass ArrayList都包括在java.util包(package)中。包是一系列相关class的集合。如果你想使用java.langSystemMathjava.lang之中)以外的任何class,你需要以packageName.ClassName使用类的全名(如java.util.Listjava.util.ArrayList)或者先使用import语句。

import语句必须在Java源代码开头,告诉Java编译器之后的程序中包括的class短名(如List)具体对应的定义可以在哪找到。你可以像下面这样仅导入你在包中所需要的个别class。为每个用到的class提供import语句即可。

import java.util.List; // import just the List interface
import java.util.ArrayList; // import just the ArrayList class

另一个选择是把同一层级的所有class都导入,使用import packageName.*

import java.util.*; // import everything including List and ArrayList

AP计算机科学考试中并不考察import,你可以假定所有class都已经被正确导入了。



0:00

Which of the following is true about import statements?

import语句位于代码最前面。
3

声明列表

可以使用List<Type> name来声明一个列表。你需要将Type替换成你所存储的任意object类型,比如希望用列表存储字符串的话需要替换成String。事实上,<Type>并不是必须的,如果不填的话默认会是Object,可以将任意Java object存放在内。不过事先明确列表中能存放的内容是很好的编程习惯。

一般而言,你需要把列表声明为List而非ArrayList,这样可以随后更换实现interface List的class而不用更新声明。在下面的代码中,我们定义了名为nameList的字符串列表,但其还没有任何列表的引用(赋值为null)。

import java.util.*; // import everything at this level
public class Test
{
    public static void main(String[] args)
    {
       List<String> nameList = null;
       System.out.println(nameList);
    }
 }

创建列表

声明列表不等同于创建列表,而仅仅是创建了可以指向列表的一个变量。为实际创建列表,可以使用new ArrayList<Type>()。如果略去<Type>,则默认为Object

新创建的列表内容是空的,即列表中不包含任何元素。你可以通过调用size() method来获得列表中元素的数目。自然,空列表的大小为0。对于不指向任何列表的变量则无法调用任何List的method,否则会抛出NullPointerException异常,意味着该变量为null,并不代表任何实际的object。注意对于数组,你会使用length field来获取元素个数。但对于ArrayList则需要用到size()

import java.util.*; // import everything at this level
public class Test
{
    public static void main(String[] args)
    {
       List<String> nameList = new ArrayList<String>();
       System.out.println("The size of nameList is: " + nameList.size());
       List<String> list2 = null;
       System.out.println("The size of list2 is: " + list2.size());
    }
}

你还可以创建存放整数值的列表。然而在这里你需要把Integer作为类型。Integer object能够存放int值。

和数组一样,你也可以在一行内同时声明并创建列表。

import java.util.*; // import everything at this level
public class Test
{
    public static void main(String[] args)
    {
       List<Integer> numList = new ArrayList<Integer>();
       System.out.println(numList.size());
    }
}

陈 欣

AADPS创始人

发表评论