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

Java中的Collection和List有什么区别? 什么时候和我应该使用哪一个?

首先:一个List是一个Collection 。 然而,这是一个专门的Collection

一个Collection就是这样:一个项目的集合。 你可以添加东西,删除东西,迭代东西,并查询有多less东西在那里。

一个List添加关于一个定义的东西序列的信息:你可以得到位置n的元素,你可以在位置n添加一个元素,你可以删除位置n的元素。

在一个Collection你不能这样做:“这个集合中的第五个元素”没有被定义,因为没有定义的顺序。

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

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

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

java集合

Java API是最好的答案

采集

集合层次结构中的根接口。 一个集合表示一组对象,称为其元素。 一些集合允许重复的元素,而另一些则不允许 一些被命令和其他无序。 JDK不提供这个接口的任何直接实现:它提供了更多特定子接口的实现,比如Set和List。 这个接口通常用于传递集合,并在需要最大化普遍性时对其进行操作。

列表 (扩展集合)

有序集合(也称为序列)。 这个接口的用户可以精确地控制每个元素插入到列表中的哪个位置。 用户可以通过整数索引(列表中的位置)来访问元素,并search列表中的元素。

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

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

决定在哪里使用这两个接口比决定使用的具体实现要重要得多。 这将对您的程序的时间和空间性能产生影响。 例如,如果你想要一个列表,你可以使用一个ArrayList或一个LinkedList,每一个都会对应用程序产生影响。 对于其他集合types(例如集合),类似的考虑适用。

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

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

List和Set是Collection的两个子类。

在列表中,数据特别是顺序。

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

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