嗨,我是Java的初学者,我在Java讲座的OO编程中被教导使用“ArrayList”,但是,我今天遇到了“List”,不知道如何使用它,那么ArrayList和List之间有什么区别?他们有什么相同的属性?Java中的列表与ArrayList
类似:
List<...>list=new List<...>()
ArrayList<...>list=new ArrayList<...>()
嗨,我是Java的初学者,我在Java讲座的OO编程中被教导使用“ArrayList”,但是,我今天遇到了“List”,不知道如何使用它,那么ArrayList和List之间有什么区别?他们有什么相同的属性?Java中的列表与ArrayList
类似:
List<...>list=new List<...>()
ArrayList<...>list=new ArrayList<...>()
List
是接口,而ArrayList
是实现该接口
List
是接口的具体类。
ArrayList
是一个实现List
的类。
你不能实例化一个接口,你必须实例化一个实现它的类。
感谢mabbas,这是否意味着我可以在不创建类的情况下实例化ArrayList,例如,我可以直接在main()方法中使用它,但是我不能和List做同样的事情? –
@peiwang你只需要导入它包含的包即'java.util'。 –
@peiwang我不知道我理解你的问题,但是为了能够在'main'方法或任何其他方法中使用'ArrayList',你仍然需要创建这个类的一个实例。例如:'List <...> theList = new ArrayList <...>();' – mabbas
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
的行为做出棘手的假设。
感谢斯特凡诺,很好的解释! –
List
定义了预期实现将提供的基本合同。 ArrayList
是由动态数组支持的此合同的实现。
这个想法伟大的事情是,如果你有需要某种List
访问的方法,你可以简单地问来电者通过您的List
任何实现,这意味着你不需要知道或关心如何该List
实际上是实现,只知道它会提供由List
描述的合同不能直接创造的List
一个实例,您需要使用的实现方式之一,如ArrayList
或LinkedList
...
例如...
List<String> listOfStrings = new ArrayList<String>(25);
List<String> anotherListOfStrings = new LinkedList<String>();
这两个答案现在不会对OP有任何帮助,因为如果他们之前没有看过List,他们可能不知道接口是什么。发布一个更好的资源链接,我会说。 – kevinsa5
你的第一行不会编译。 – dasblinkenlight
我想你应该看看这个线程。 http:// stackoverflow。com/questions/14903145/list-and-arraylist之间的区别是什么 –