2012-07-18 78 views
1

我正在为Android开发,想知道ArrayList和List之间的主要区别是什么?我应该使用ArrayList <?>或列表<?>

+2

你看过他们各自的文件吗?这应该立即回答这个问题。 – 2012-07-18 12:28:48

+0

@KonradRudolph我不认为这是真的,对于不了解接口等的人来说,文档看起来像任何其他类。 – 2012-07-18 12:34:36

+0

@Jon好吧,如果你不知道接口,那么整个讨论都是无关紧要的。 – 2012-07-18 12:35:32

回答

3

为了处理Java中的对象集合,已经提供了Collection接口。这在java.util package可用。

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

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

编辑:

在Java应用程序的开发,当你应该通过集合框架对象作为参数传递给方法,那么最好是去与

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

,因为在未来由于性能限制,如果您要更改实现以使用链表或其他实现List接口的类而不是ArrayList,则只能在实例化部分的一个点(即)处更改。否则,你应该改变所有的领域,你曾经使用特定的类实现作为方法参数。

1

ListArrayList实现的接口。如果您尝试创建某种方法需要某种类型的List,但您不打扰实际使用的实现方式,请使用List

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

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

将是一个例子。

无法实例的接口,因此会得到一个错误,如果你想做到以下几点:

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

我相信这是一个接口。 – 2012-07-18 12:31:45

+0

@Benito Lol我编辑过,我累了,写了错误的东西:) – 2012-07-18 12:32:35

0

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

2

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

collections hierarchy

相关问题