Java中的Collection和List有什么区别?


Answers:


263

首先:a List是一个Collection。但是,它是专门的Collection

A Collection就是这样:项目的集合。您可以添加内容,删除内容,遍历所有内容并查询其中有多少内容。

一个List增加有关规定的东西,它的序列信息:你可以在获取位置的元素ñ,你可以在位置添加元素ñ,你可以在位置删除元素ñ

在a中,Collection您无法执行此操作:未定义“此集合中的第5个元素”,因为没有定义的顺序。

也有其他专门的Collection,例如a Set,它添加了一个功能,它将永远不会包含相同的元素两次。


9
是的,列表是集合的有序专业化(但未排序)+1
atamanroman10年

2
在Java列表扩展集合接口,并建立其在位置帮助基于内容的检索和删除行为索引功能
frictionlesspulley

188

Collection是java Collections层次结构的根接口。 List是一个定义有序Collection的子接口,其他子接口 Queue通常将存储准备好进行处理的元素(例如stack)。

下图演示了不同的Java集合类型之间的关系:

Java集合


1
就像您的图像一样,在准备SCJP时我已经看过了,但是这些天几乎忘了所有这些东西。
Truong Ha

1
我必须承认,这张图片是从此博客挖来的。我也首先在K&B SCJP书中看到了这样的图表。
krock

您可以从scjp证书中学到很多,有关该主题的大多数书籍都很棒:)
atamanroman 2010年

我想Map不是Collection
giannis christofakis

7

Java API是最好的答案

采集

集合层次结构中的根接口。集合表示一组对象,称为其元素。一些集合允许重复的元素,而另一些则不允许。一些是有序的,而其他则是无序的。JDK不提供此接口的任何直接实现:它提供更特定的子接口(如Set和List)的实现。该接口通常用于传递集合,并在需要最大通用性的地方操作它们。

列表(扩展集合)

有序集合(也称为序列)。该界面的用户可以精确控制列表中每个元素的插入位置。用户可以通过其整数索引(列表中的位置)访问元素,并在列表中搜索元素。

与集合不同,列表通常允许重复的元素。更正式地讲,列表通常允许成对的元素e1和e2,使得e1.equals(e2),并且如果它们完全允许空元素,则它们通常允许多个空元素。并非不可想象的是,有人希望通过在用户尝试插入运行时异常时抛出运行时异常来实现禁止重复的列表,但是我们希望这种用法很少见。


3

List和Set是Collection的两个子类。

在列表中,数据按特定顺序排列。

在Set中,它不能包含两次相同的数据。

在Collection中,它只存储没有特定顺序的数据,并且可以包含重复数据。


2

集合是描述Java对象的高级接口,其中可以包含其他对象的集合。关于如何访问它们,同一集合中是否可以存在同一对象的多个副本,或者顺序是否重要,尚不十分明确。 列表专门是对象的有序集合。如果按特定顺序将对象放入列表,它们将保持该顺序。

与决定使用哪种具体实现相比,决定在何处使用这两个接口并不重要。这将影响程序的时间和空间性能。例如,如果您想要一个列表,则可以使用ArrayList或LinkedList,它们中的每一个都会对应用程序产生影响。对于其他集合类型(例如,集合),适用类似的注意事项。


2

Collection是List的超级接口,因此每个Java列表都是collection的实例。集合只能顺序地(且没有特定的顺序)迭代,而列表允许通过该get(int index)方法访问某个位置的元素。


2

集合是Java集合层次结构的主要接口,而List(Sequence)是定义有序集合的子接口之一。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.