【发布时间】:2010-07-23 10:40:28
【问题描述】:
Collection 和 List 在 Java 中的区别是什么?我什么时候应该使用哪个?
【问题讨论】:
-
公共接口列表扩展集合{}
标签: java collections
Collection 和 List 在 Java 中的区别是什么?我什么时候应该使用哪个?
【问题讨论】:
标签: java collections
首先:List 是Collection。但是,它是专门的Collection。
Collection 就是这样:一个项目的集合。您可以添加内容、删除内容、迭代内容并查询其中有多少内容。
List 将有关已定义的东西序列的信息添加到它:您可以获取位置 n 处的元素,您可以添加位置 n 处的元素,您可以删除位置 n 处的元素。
在Collection 中,您不能这样做:“此集合中的第 5 个元素”未定义,因为没有定义顺序。
还有其他专门的集合,例如Set,它添加了它永远不会包含相同元素两次的功能。
【讨论】:
Collection 是 java Collections 层次结构的根接口。 List 是一个定义有序集合的子接口,其他子接口是Queue,它通常会存储准备处理的元素(例如stack)。
下图展示了不同java集合类型之间的关系:
【讨论】:
Map 不是Collection。
Java API 是回答这个问题的最佳选择
收藏
集合中的根接口 等级制度。一个集合代表一个 一组对象,称为它的 元素。一些集合允许 重复的元素和其他没有。 有些是有序的,有些是无序的。 JDK 不提供任何直接 这个接口的实现:它 提供更多的实现 特定的子接口,如 Set 和 列表。该接口通常用于 传递集合和 在最大的地方操纵它们 需要通用性。
列表(扩展集合)
有序集合(也称为 顺序)。该界面的用户 有精确的控制在哪里 列出每个插入的元素。这 用户可以通过他们的访问元素 整数索引(列表中的位置), 并在列表中搜索元素。
与集合不同,列表通常允许 重复元素。更正式地说, 列表通常允许成对 元素 e1 和 e2 使得 e1.equals(e2),它们通常 允许多个 null 元素,如果它们 完全允许空元素。它不是 难以想象有人可能希望 实施禁止清单 重复,通过抛出运行时 用户尝试时的异常 插入它们,但我们期望这种用法 很少见。
【讨论】:
Collection 是 List 的 Super 接口,因此每个 Java 列表也是集合的一个实例。集合只能按顺序迭代(并且没有特定顺序),而 List 允许通过 get(int index) 方法访问特定位置的元素。
【讨论】:
Collection 是 Java Collections 层次结构的主接口,List(Sequence) 是定义有序集合的子接口之一。
【讨论】:
List 和 Set 是 Collection 的两个子类。
在List中,数据是有特定顺序的。
在Set中,不能重复包含相同的数据。
在Collection中,它只是存储没有特定顺序的数据,并且可以包含重复数据。
【讨论】:
Collection 是一个高级接口,用于描述可以包含其他对象集合的 Java 对象。关于它们是如何被访问的,同一个对象的多个副本是否可以存在于同一个集合中,或者顺序是否重要,这并不是很具体。 List 是具体的 有序 对象集合。如果您按特定顺序将对象放入 List 中,它们将保持该顺序。
决定在哪里使用这两个接口远不如决定你使用的具体实现是什么重要。这将对程序的时间和空间性能产生影响。例如,如果您想要一个列表,您可以使用 ArrayList 或 LinkedList,它们中的每一个都会对应用程序产生影响。对于其他集合类型(例如集合),适用类似的注意事项。
【讨论】: