3

我正在为 Android 开发并想知道,ArrayList 和 List 之间的主要区别是什么?

4

5 回答 5

7

对于Java中对象集合的处理,提供了Collection接口。这在java.util package.

“List”是一个接口,它扩展了集合接口,提供了一些比集合接口额外的方法来处理集合。其中“ArrayList”是“List”接口的实际实现。

除了 List接口中可用的方法之外,ArrayList 类只有几个方法。这没有太大区别。唯一的区别是,您在第一个中创建父接口的引用,并在第二个中创建实现 List(即)ArrayList 类的类的引用。如果你使用第一个,你将能够调用 List 接口中可用的方法,你不能调用 ArrayList 类中可用的新方法。而如果你使用第二个,你可以自由使用所有ArrayList 中可用的方法。

编辑:

在 Java 应用程序开发中,当您应该将集合框架对象作为参数传递给方法时,最好使用

List tempList = new ArrayList();
somemethodcall(tempList);

因为,将来由于性能限制,如果您要更改实现以使用链表或其他一些实现 List 接口的类,而不是 ArrayList,则只能在一个点(即)仅更改实例化部分。否则,您将应该在所有区域进行更改,无论何时,您都使用特定的类实现作为方法参数。

于 2012-07-18T12:29:08.123 回答
6

user370305 给出了准确的解释。这也可以帮助您理解 Java 中的集合层次结构。

集合层次结构

于 2012-07-18T13:03:11.473 回答
2

ListArrayList实现的接口。如果您正在尝试创建一个需要List某种类型的方法,但您并不关心实际使用的是什么实现,那么请使用List.

如果您实际上是在实例化一个类,那么您必须选择其中List一个的一些实现是ArrayList

List<String> l1 = new ArrayList<String>();

将是一个例子。

您无法实例化接口,因此如果您尝试执行以下操作会出现错误:

List<String> l2 = new List<String>();
于 2012-07-18T12:30:04.750 回答
0

维基百科上有一篇很好的文章,其中数组列表被称为“动态数组”。
如果您正在尝试优化您的应用程序,您应该查看文章旁边的表格。

于 2012-07-18T12:33:55.437 回答
0

List是一个接口,ArrayList是接口的一个实现List。除了接口中可用的方法之外,该类ArrayList只有几个方法。List

看看关于JavaBeat - List 和 ArrayList 之间的区别的短文?

于 2012-07-18T12:34:54.250 回答