你好,我是Java初学者,在Java讲座中学习了面向对象编程的“ArrayList”,但是今天遇到了“List”,不知道怎么用,那么ArrayList和ArrayList有什么区别呢?列表?他们有什么相同的属性?
就像是:
List<...>list=new List<...>()
ArrayList<...>list=new ArrayList<...>()
List
是一个接口,而ArrayList
是一个实现该接口的具体类
List
是一个接口。
ArrayList
是一个实现List
.
你不能实例化一个接口,你必须实例化一个实现它的类。
List
是一个接口,本质上提供了一个操作列表(添加、删除、获取...),但没有实现(你不能这样做new List
)。有几个类实现List
接口的类,包括ArrayList
(如前所述,使用数组作为内部容器),例如,LinkedList
. 相反,您可以实例化这些,然后编写:
List<ElementType> myList = new ArrayList<ElementType>();
如果你想替换,使用List
作为一种类型可以减少工作量myList
ArrayList
为LinkedList
减少工作量:
List<ElementType> myList = new LinkedList<ElementType>();
(想象一下,如果您不得不在几个地方替换为)ArrayList
。LinkedList
此外,您将隐藏背后的实际实现,以便其他程序员不会对List
可能的行为方式做出棘手的假设。
List
定义预期实现将提供的基本合同。 ArrayList
是由动态数组支持的此合约的实现。
这个想法的好处是,如果您有一个需要访问某种 的方法List
,您可以简单地要求调用者将 的任何实现传递给您List
,这意味着您不需要知道或关心List
实际是如何实现的,只需它将提供由List
您不能List
直接创建实例,您需要使用其中一种实现,例如ArrayList
或LinkedList
...
例如...
List<String> listOfStrings = new ArrayList<String>(25);
List<String> anotherListOfStrings = new LinkedList<String>();