我应该使用ArrayList <! - ? - >或List <! - ? - >

时间:2012-07-18 12:27:10

标签: java android optimization

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

5 个答案:

答案 0 :(得分:3)

为了在Java中处理对象集合,提供了Collection接口。这可以在java.util package中找到。

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

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

修改

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

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

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

答案 1 :(得分:2)

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

collections hierarchy

答案 2 :(得分:1)

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

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

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

就是一个例子。

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

List<String> l2 = new List<String>();

答案 3 :(得分:0)

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

答案 4 :(得分:0)

List是一个接口,ArrayListList接口的实现。除ArrayList接口中提供的方法外,List类只有几种方法。

查看JavaBeat - Difference Between List and ArrayList?

上的简短文章