Java中的List&ArrayList

Java中的List&ArrayList,java,list,arraylist,Java,List,Arraylist,大家好,我是Java初学者,在Java课程中,我被教导在OO编程中使用ArrayList,但是,今天我遇到了List,不知道如何使用它,那么ArrayList和List之间有什么区别呢?它们有什么相同的属性 比如: List<...>list=new List<...>() ArrayList<...>list=new ArrayList<...>() List是一个接口,而ArrayList是一个实现

大家好,我是Java初学者,在Java课程中,我被教导在OO编程中使用ArrayList,但是,今天我遇到了List,不知道如何使用它,那么ArrayList和List之间有什么区别呢?它们有什么相同的属性

比如:

           List<...>list=new List<...>()
           ArrayList<...>list=new ArrayList<...>()
List是一个接口,而ArrayList是一个实现该接口的具体类。List是一个接口

ArrayList是一个实现List的类

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

列表是一个接口,本质上提供了一个添加、删除、获取…的操作列表,但没有实现你不能创建新的列表。有几个类实现列表接口,包括ArrayList,如前所述,它使用数组作为内部容器,例如LinkedList。您可以将其实例化,然后编写:

List<ElementType> myList = new ArrayList<ElementType>();
相反,如果您必须在多个位置用LinkedList替换ArrayList,请使用immagine。此外,您将隐藏实际的实现,这样其他程序员就不会对列表的行为做出复杂的假设。

列表定义了实现将提供的基本契约。ArrayList是这个契约的一个实现,它由一个动态数组支持

这个想法的好处是,如果你有一个方法需要访问某种列表,你可以简单地要求调用者向你传递列表的任何实现,这意味着你不需要知道或关心列表实际上是如何实现的,只需要它提供列表描述的契约即可

您不能直接创建List的实例,您需要使用其中一种实现,如ArrayList或LinkedList

例如

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

现在这两个答案对OP没有任何帮助,因为如果他们以前没有看过这个列表,他们可能也不知道接口是什么。发布一个链接到更好的资源,我会说。你的第一行不会编译。我想你应该看看这个线程。谢谢mabbas,这是否意味着我可以在不创建类的情况下实例化ArrayList,例如,我可以在main方法中直接使用它,但我不能在List中执行相同的操作?@peiwang您只需要导入它包含的包。这就是java.util。@peiwang我不确定我是否理解您的问题,但是为了能够在main方法或任何其他方法中使用ArrayList,您仍然需要创建此类的实例。例如:列表列表=新阵列列表@mabbas,谢谢你的回复,所以,ListtheList=new ArrayList;和ArrayList=新的ArrayList;有相同的函数来存储内容,对吗?是的,但正如@stefanoSanfilippo所说,如果有一天你想用另一个实现List的类来替换ArrayList,那么使用List作为List的类型可以减少工作量。因此,通过对象的接口引用对象是一种很好的做法。我建议你看看这篇文章谢谢Stefano,很好的解释!
List<String> listOfStrings = new ArrayList<String>(25);
List<String> anotherListOfStrings = new LinkedList<String>();