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


当前回答

设置: Set的集合中不能有Duplicate元素。它也是一个无序集合。要从Set中访问数据,只需要使用Iterator,基于索引的检索是不可能的。它主要用于需要唯一性收集的时候。

列表: List可以有重复的元素,插入时使用自然顺序。 因此,它可以基于索引或迭代器检索数据。它广泛用于存储需要基于索引进行访问的集合。

其他回答

集合是由不同对象组成的无序组——不允许有重复的对象。它通常使用被插入对象的哈希代码来实现。(特定的实现可能会添加排序,但Set接口本身没有。)

列表是一组有序的对象,其中可能包含重复项。它可以用数组列表、链表等来实现。

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

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

嗨,已经给出了这么多答案,让我指出一些到目前为止没有提到的地方:

大多数的List实现(ArrayList,Vector)实现了RandomAccess接口,这是一个快速访问的标记接口。Set的实现都没有这样做。 List使用一个特殊的迭代器,称为ListIterator,它支持双向迭代。Set使用只支持单向迭代的迭代器 HashSet占用的内存是ArrayList的5.5倍 相同数量的元素。

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

List Set
Duplicates Yes No
Order Ordered Depends on implementation
Position Access Yes No