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 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中,它只是存储没有特定顺序的数据,并且可以包含重复的数据。
- 谷歌的ImmutableList和Collections.unmodifiableList()有什么区别?
- JSTL c:forEach在JSP页面上不起作用
- 解释Collections的语法。<String> emptyList()
- 将List <DerivedClass>转换为List <BaseClass>
- JQuery支持字典(键,值)集合吗?
- ArrayList的ConcurrentModificationException
- 有序和sorting的集合有什么区别?
- 我应该返回一个IEnumerable或IList?
- 为什么没有针对ConcurrentHashMap的ConcurrentHashSet