Java中列表和集合之间的区别

作者: Laura McKinney
创建日期: 2 四月 2021
更新日期: 15 可能 2024
Anonim
18-10 集合框架HashMap和Hashtable的区别
视频: 18-10 集合框架HashMap和Hashtable的区别

内容


List and Set接口扩展了Collection。它们都维护元素或对象的集合。但是,将它们彼此区分开的主要区别是List是有序元素的集合,这些元素是在索引变量的帮助下添加或删除或访问的。另一方面,Set是对象的集合,其中该集合不允许其中有重复的元素。让我们借助下面显示的比较表研究List和Set接口之间的更多区别。

  1. 比较表
  2. 定义
  3. 关键差异
  4. 结论

比较表

比较基础清单
基本的列表维护列表中存储的元素的顺序。Set不会特别维护插入顺序,但是Linked HashSet会维护插入顺序。
复制列表中可能包含重复的元素。如果您尝试插入重复的元素,则add()方法将返回false。
方法除了在Collection中定义的方法外,List还定义了一些自己的方法。Set没有定义任何其他方法。
实作 列表由ArrayList,LinkedList,CopyOnWriteArrayList,Vector,Stack实现。Set由HashSet,LinkedHashSet,EnumSet,TreeSet,CopyOnWriteArraySet实现。

清单的定义

List接口扩展了Collection接口。列表是元素或对象的有序集合。与Set不同,List可能包含重复的元素。除了在“收集列表”中定义的方法外,还定义了一些自己的方法,例如基于索引的get()和set()方法。从Collection继承的add()和remove()方法可从方法参数中指定的索引中添加或删除指定的元素。 List是一种数组,其大小会随着我们向列表中添加元素而增加。


List没有定义任何对列表中的索引范围进行操作的方法。它定义了sublist()方法,该方法从指定范围的原始列表中返回一个子列表。您对子列表所做的更改也会显示在原始列表中。 List接口由ArrayList,LinkedList,CopyOnWriteArrayList,Vector,Stack实现。

集的定义

Set接口扩展了Collection接口。 Set接口是一个集合或一组对象,其中没有任何重复的对象。这意味着两个引用不能引用一个对象,或者一个引用不能引用两个对象,或者不能有两个引用为Null的引用。元素的顺序或顺序并不重要Set,但并不是禁止有序集合。

除Collection中定义的方法外,Set接口未定义任何方法。相反,它限制了collection的add()和addall()方法以在集合中添加任何重复的对象。如果尝试使用Collection的add()方法在集合中添加任何重复的对象,它将返回false。否则,它返回true。 Set接口由HashSet,LinkedHashSet,EnumSet,TreeSet,CopyOnWriteArraySet实现。

  1. 集合中元素/对象的顺序在List中维护,而Set不维护元素的顺序,但LinkedHashSet例外,维护插入顺序。
  2. List可以具有重复的元素,因为它可以标识具有其索引的任何元素,但是Set不允许任何重复的元素,因为它没有任何索引种类的元素来标识集合中的任何对象。
  3. 除Collection中定义的方法外,List还单独定义了一些方法。另一方面,Set并没有定义自己的任何方法,但是它限制了Collection方法添加任何重复的元素。
  4. 列表是通过ArrayList,LinkedList,CopyOnWriteArrayList,Vector,Stack接口实现的。另一方面,通过HashSet,LinkedHashSet,EnumSet,TreeSet,CopyOnWriteArraySet接口实现Set。

结论:

List和Set接口的使用取决于需求。如果对象/元素的顺序很重要,则必须使用List界面。如果您的集合中不需要任何重复的元素,则必须使用Set接口