List 和 ArrayList 有啥区别? [复制]

Posted

技术标签:

【中文标题】List 和 ArrayList 有啥区别? [复制]【英文标题】:What is the difference between List and ArrayList? [duplicate]List 和 ArrayList 有什么区别? [复制] 【发布时间】:2013-01-31 22:14:07 【问题描述】:

我最近在办公室的android项目中一直在使用ArrayList,我对List和ArrayList有点困惑,两者有什么区别,我应该使用什么?

我也看到了它的一些实现。

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

ArrayList<SomeObject> myList = new ArrayList<SomeObject>();

这两个实例有什么区别?

【问题讨论】:

Type List vs type ArrayList in Java、Java List vs ArrayList 和 List vs ArrayList 的可能重复项;还有List Vs. ArrayList和much more! ***.com/questions/6867484/… 一个是接口,一个是类。现在你可以自己找出来了。 【参考方案1】:

您的两个示例中的列表实现之间没有区别。 但是,您可以在代码中进一步使用变量 myList 的方式有所不同。

当您将列表定义为:

List myList = new ArrayList();

您只能调用 List 接口中定义的方法和引用成员。 如果定义为:

ArrayList myList = new ArrayList();

您将能够调用特定于 ArrayList 的方法并使用特定于 ArrayList 的成员,以及那些定义从 List 继承的成员。

然而,当你调用第一个例子中List接口的方法时,它是在ArrayList中实现的,ArrayList中的方法会被调用(因为List接口没有实现任何方法)。

这就是所谓的多态性。你可以阅读它。

【讨论】:

List 不是一个类,它是一个接口。它没有实现任何方法。因此,如果您在 List 引用上调用方法,实际上您在两种情况下都调用了 ArrayList 的方法。 有一个区别,正如@robonerd 上面解释的那样。 List 是一个接口,你不仅可以使用类或原始类型来键入变量,还可以使用接口。 各位,请仔细阅读我的帖子。不要将定义与实现混为一谈。在这两种情况下,实现都是相同的:ArrayList。变量的定义不同。不确定您要在我​​的回答中更改什么。 @ATrubka,在这两个例子中,如果我调用一个方法,它将执行 ArrayList 类中的方法,那么定义 List myList = new ArrayList(); 有什么用 这样你就可以将你的代码与 List 接口的特定实现分离。如果后来有人认为 LinkedList 更好,那么唯一改变的就是分配。上面的例子太微不足道了,无法证明它的好处。现实生活中的例子有更多。例如,将有一个将 List 作为参数而不是 ArrayList 的方法。看看 Collections.sort() 和 Collections 类的其他方法。

以上是关于List 和 ArrayList 有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在C#中LIST、ArrayList、hashtable三种有啥区别?

List 、Set、 Map有啥区别和联系

Hadoop 的 Lists.newArrayList和正常的 new ArrayList()有啥区别?

java中ArrayList和LinkedList有啥区别,分别怎么使用呢

java中 JSON.toJSONString(list,true); 和 JSON.toJSONString(list); 有啥区别呢,

list,set,map有啥区别