Java中Collection
和List
之间有什么区别?我什么时候应该使用哪个?
答案 0 :(得分:231)
首先关闭:List
是Collection
。不过,这是一个专门的Collection
。
Collection
只是:一组项目。你可以添加东西,删除东西,迭代东西并查询那里有多少东西。
A List
将有关已定义的事物序列的信息添加到其中:您可以在 n 位置获取元素,您可以在 n 位置添加元素em>,您可以删除 n 位置的元素。
在Collection
中,您不能这样做:“此集合中的第5个元素”未定义,因为没有已定义的顺序。
还有其他专门的集合,例如Set
,它增加了它永远不会包含两次相同元素的功能。
答案 1 :(得分:161)
Collection
是java Collections层次结构的根接口。 List
是一个定义有序Collection的子接口,其他子接口是Queue
,通常会存储准备好处理的元素(例如stack)。
下图演示了不同java集合类型之间的关系:
答案 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)是定义有序集合的子接口之一。