Set<E>接口和List<E>接口的根本区别是什么?


当前回答

订购…列表有顺序,集合没有。

其他回答

所有List类都保持插入的顺序。它们基于性能和其他特性使用不同的实现(例如ArrayList用于特定索引的访问速度,LinkedList用于简单地维护顺序)。因为没有密钥,所以允许复制。

Set类不维护插入顺序。它们可以选择性地施加特定的顺序(如SortedSet),但通常具有基于一些散列函数的实现定义的顺序(如HashSet)。由于set是通过键访问的,因此不允许重复。

List是项的有序分组 Set是一个无序的项目分组,不允许重复(通常)

从概念上讲,我们通常将允许重复的无序分组称为Bag,而不允许重复的无序分组称为Set。

List和Set都是接口。它们都扩展了Collection接口。set和list之间的重要区别是:

复制对象

List和Set之间的主要区别是List允许重复,而Set不允许重复。

订单

List是一个有序的集合,它维护插入顺序,这意味着在显示列表内容时,它将以它们插入到列表中的相同顺序显示元素。

Set是一个无序的集合,它不维护任何顺序。很少有维护顺序的Set实现,例如LinkedHashSet(它按照插入顺序维护元素)。

空元素

List允许任意数量的空元素。Set最多只能有一个null元素。

1.List允许重复值,set不允许重复值

2.List维护您在列表中插入元素的顺序 Set不能维持秩序。 3.List是一个有序的元素序列,而Set是一个无序的元素列表。

最大的不同在于基本概念。

从设置和列表界面。集合是数学概念。设置方法扩展集合。但是没有添加新的方法。size()表示基数(more为BitSet。基数,线性计数器,日志日志,HyperLogLog)。addAll()表示联合。retainAll()表示交集。removeAll()表示差异。

However List lack of these concepts. List add a lot of method to support sequence concept which Collection interface not supply. core concept is INDEX. like add(index,element),get(index),search(indexOf()),remove(index) element. List also provide "Collection View" subList. Set do not have view. do not have positional access. List also provide a lot of algorithms in Collections class. sort(List),binarySearch(List),reverse(List),shuffle(List),fill(List). the method params is List interface. duplicate elements are just the result of concepts. not the essential difference.

所以本质的区别在于概念。集合是数学集合的概念。列表是序列的概念。