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

时间:2010-07-23 10:40:28

标签: java collections

Java中CollectionList之间有什么区别?我什么时候应该使用哪个?

7 个答案:

答案 0 :(得分:231)

首先关闭:ListCollection。不过,这是一个专门的Collection

Collection只是:一组项目。你可以添加东西,删除东西,迭代东西并查询那里有多少东西。

A List将有关已定义的事物序列的信息添加到其中:您可以在 n 位置获取元素,您可以在 n 位置添加元素em>,您可以删除 n 位置的元素。

Collection中,您不能这样做:“此集合中的第5个元素”未定义,因为没有已定义的顺序。

还有其他专门的集合,例如Set,它增加了它永远不会包含两次相同元素的功能。

答案 1 :(得分:161)

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

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

java collections

答案 2 :(得分:7)

Java API是最好的回答

<强>集合

  

集合中的根接口   层次结构。一个集合代表一个   一组物体,称为它   元素。有些藏品允许   重复的元素和其他元素没有。   有些是订购的,有些是无序的。   JDK不提供任何直接的   这个接口的实现:它   提供更多的实现   特定的子接口,如Set和   名单。通常使用此接口   传递集合和   在最大值的地方操纵它们   需要普遍性。

列表(扩展收藏)

  

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

     

与集合不同,列表通常允许   重复元素。更正式的,   列表通常允许成对   元素e1和e2这样   e1.equals(e2),它们通常是   允许多个null元素   允许null元素。它不是   不可想象有人可能希望   实施禁止的列表   重复,通过投掷运行时   用户尝试时的异常   插入它们,但我们希望这种用法   很少见。

答案 3 :(得分:3)

List和Set是Collection的两个子类。

在列表中,数据特别有序。

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

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

答案 4 :(得分:2)

Collection 是一个高级接口,用于描述可包含其他对象集合的Java对象。关于如何访问它们,是否可以在同一个集合中存在同一对象的多个副本,或者顺序是否重要,它并不是非常具体。 List 特别是有序对象集合。如果您按特定顺序将对象放入List中,它们将保持该顺序。

决定使用这两个接口的位置远比决定使用的具体实现更重要。这将对程序的时间和空间性能产生影响。例如,如果需要列表,可以使用ArrayList或LinkedList,每个都会对应用程序产生影响。对于其他集合类型(例如集合),类似的考虑因素也适用。

答案 5 :(得分:2)

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

答案 6 :(得分:2)

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