List 和 Set 集合的区别

简介: List 和 Set 集合的区别

相同点:

List、Set 都继承自 Collection 接口

区别:

1. 元素的顺序:List 是有序集合(元素按照插入顺序排序),而 Set 是无序集合(不保证元素的顺序)。

注:元素在 Set 中的位置是由该元素的 HashCode 决定的,其位置是固定的

2. 元素的唯一性:List 中可以包含重复元素,而 Set 中不允许有重复元素。当向 Set 中添加重复元素时,新的元素将被忽略。

3. 实现类不同:List 可以使用数组、链表等数据结构实现,常用的实现类有 ArrayList、LinkedList 和 Vector。而 Set 的实现通常使用哈希表或树等数据结构,常用的实现类有 HashSet、LinkedHashSet 和 TreeSet。

4. 时间复杂度不同:List 通常提供了更多的操作方法,如添加、删除、遍历、获取指定位置的元素等,但某些操作的时间复杂度可能较高。例如,在 ArrayList 中插入或删除一个元素需要移动后续元素的位置,这样的操作可能需要 O (n) 的时间复杂度。Set 中虽然提供的操作方法相对较少,但在大部分情况下,Set 的操作时间复杂度都比 List 更低。

5. 支持的遍历方式不同:List 支持 for 循环,也就是通过下标来遍历,也可以通过迭代器遍历。Set 只能用迭代器遍历,因为没有索引下标。

总之,List 和 Set 在元素的顺序、唯一性、实现方式和时间复杂度等方面存在差异。开发者应根据需求选择适当的集合类型来存储数据。如果需要保留元素的顺序并且允许重复元素,可以选择 List;如果需要去除重复元素并且不关心元素的顺序,可以选择 Set。

image.png

相关文章
|
5月前
|
存储 缓存 JavaScript
Set和Map有什么区别?
Set和Map有什么区别?
463 1
|
2月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
184 4
|
6月前
|
存储 JavaScript 前端开发
Set中的add()方法和数组的push()方法有什么区别?
Set中的add()方法和数组的push()方法有什么区别?
412 122
|
5月前
|
并行计算 Java API
Java List 集合结合 Java 17 新特性与现代开发实践的深度解析及实战指南 Java List 集合
本文深入解析Java 17中List集合的现代用法,结合函数式编程、Stream API、密封类、模式匹配等新特性,通过实操案例讲解数据处理、并行计算、响应式编程等场景下的高级应用,帮助开发者提升集合操作效率与代码质量。
266 1
|
5月前
|
存储 安全 Java
Java 学习路线 35 掌握 List 集合从入门到精通的 List 集合核心知识
本文详细解析Java中List集合的原理、常用实现类(如ArrayList、LinkedList)、核心方法及遍历方式,并结合数据去重、排序等实际应用场景,帮助开发者掌握List在不同业务场景下的高效使用,提升Java编程能力。
427 0
|
6月前
|
存储 Java C语言
Java List 复制:浅拷贝与深拷贝方法及区别
我是小假 期待与你的下一次相遇 ~
678 1
|
6月前
|
存储 编译器 容器
set、map、multiset、multimap的介绍及使用以及区别,注意事项
set是按照一定次序存储元素的容器,使用set的迭代器遍历set中的元素,可以得到有序序列。set当中存储元素的value都是唯一的,不可以重复,因此可以使用set进行去重。set默认是升序的,但是其内部默认不是按照大于比较,而是按照小于比较。set中的元素不能被修改,因为set在底层是用二叉搜索树来实现的,若是对二叉搜索树当中某个结点的值进行了修改,那么这棵树将不再是二叉搜索树。
260 0
|
存储 缓存 安全
只会“有序无序”?面试官嫌弃的List、Set、Map回答!
小米,一位热衷于技术分享的程序员,通过与朋友小林的对话,详细解析了Java面试中常见的List、Set、Map三者之间的区别,不仅涵盖了它们的基本特性,还深入探讨了各自的实现原理及应用场景,帮助面试者更好地准备相关问题。
343 20
set集合
HashSet(无序,唯一): 基于 HashMap 实现的,底层采用 HashMap 来保存元素。 LinkedHashSet: LinkedHashSet 是 HashSet 的子类,并且其内部是通过 LinkedHashMap 来实现的。 TreeSet(有序,唯一): 红黑树(自平衡的排序二叉树)。