2013-10-08 41 views
-1

嗨,我是Java的初学者,我在Java讲座的OO编程中被教导使用“ArrayList”,但是,我今天遇到了“List”,不知道如何使用它,那么ArrayList和List之间有什么区别?他们有什么相同的属性?Java中的列表与ArrayList

类似:

  List<...>list=new List<...>() 
      ArrayList<...>list=new ArrayList<...>() 
+0

这两个答案现在不会对OP有任何帮助,因为如果他们之前没有看过List,他们可能不知道接口是什么。发布一个更好的资源链接,我会说。 – kevinsa5

+0

你的第一行不会编译。 – dasblinkenlight

+0

我想你应该看看这个线程。 http:// stackoverflow。com/questions/14903145/list-and-arraylist之间的区别是什么 –

回答

4

List接口,而ArrayList是实现该接口

1

List是接口的具体类。

ArrayList是一个实现List的类。

你不能实例化一个接口,你必须实例化一个实现它的类。

+0

感谢mabbas,这是否意味着我可以在不创建类的情况下实例化ArrayList,例如,我可以直接在main()方法中使用它,但是我不能和List做同样的事情? –

+0

@peiwang你只需要导入它包含的包即'java.util'。 –

+0

@peiwang我不知道我理解你的问题,但是为了能够在'main'方法或任何其他方法中使用'ArrayList',你仍然需要创建这个类的一个实例。例如:'List <...> theList = new ArrayList <...>();' – mabbas

0

List是一个界面,主要提供操作列表(添加,删除,获取...),但没有实现(您不能执行new List)。有几个类实现List接口,包括ArrayList(使用,如上所述,一个数组作为内部容器),例如,LinkedList。您可以举例说明这些,而是​​写:

List<ElementType> myList = new ArrayList<ElementType>(); 

使用List作为一个类型myList降低了努力,如果你想与LinkedList更换ArrayList

List<ElementType> myList = new LinkedList<ElementType>(); 

(想象,相反,如果你必须在几个地方用LinkedList代替ArrayList)。此外,您将隐藏实际的实现,以便其他程序员不会对List的行为做出棘手的假设。

+0

感谢斯特凡诺,很好的解释! –

0

List定义了预期实现将提供的基本合同。 ArrayList是由动态数组支持的此合同的实现。

这个想法伟大的事情是,如果你有需要某种List访问的方法,你可以简单地问来电者通过您的List任何实现,这意味着你不需要知道或关心如何该List实际上是实现,只知道它会提供由List

描述的合同不能直接创造的List一个实例,您需要使用的实现方式之一,如ArrayListLinkedList ...

例如...

List<String> listOfStrings = new ArrayList<String>(25); 
List<String> anotherListOfStrings = new LinkedList<String>();