Set接口
Set接口
Set 接口是 Java 集合框架中的一个核心接口,继承自 Collection 接口。它表示一个 不包含重复元素 的集合,即集合中的元素是唯一的
Set接口特点
-
不允许重复元素
-
Set 中的元素是唯一的,如果尝试添加重复元素,添加操作会被忽略。
-
元素的唯一性是通过 equals() 和 hashCode() 方法来判断的
-
-
无序性
- Set 不保证元素的顺序(除了 LinkedHashSet 和 TreeSet)。
- 取出的顺序不是添加的顺序,但是这个顺序是固定的
- HashSet 是无序的,LinkedHashSet 维护插入顺序,TreeSet 根据元素的自然顺序或指定的比较器排序
-
允许 null 元素
- 大多数 Set 实现类(如 HashSet 和 LinkedHashSet)允许存储 null 值,但 TreeSet 不允许
- 不允许多个null值
-
非线程安全
- Set 的实现类(如 HashSet、LinkedHashSet 和 TreeSet)不是线程安全的。
Set接口常用方法
Set 接口继承了 Collection 接口的所有方法,但由于 Set 不允许重复元素,因此某些方法的行为与 Collection 有所不同
2.1 添加元素
boolean add(E e)
:向集合中添加一个元素。如果集合中已经包含该元素,则返回false
,否则返回true
。
2.2 删除元素
boolean remove(Object o)
:从集合中移除指定的元素。如果集合包含该元素并成功移除,则返回true
,否则返回false
。boolean removeAll(Collection<?> c)
:从集合中移除所有包含在指定集合中的元素。boolean retainAll(Collection<?> c)
:仅保留集合中那些也包含在指定集合中的元素。void clear()
:清空集合中的所有元素。
2.3 查询元素
boolean contains(Object o)
:判断集合中是否包含指定的元素。boolean containsAll(Collection<?> c)
:判断集合中是否包含指定集合中的所有元素。boolean isEmpty()
:判断集合是否为空。int size()
:返回集合中的元素数量。
2.4 遍历元素
Iterator<E> iterator()
:返回一个用于遍历集合中元素的迭代器。
2.5 集合转换
Object[] toArray()
:将集合转换为一个数组。<T> T[] toArray(T[] a)
:将集合转换为指定类型的数组。
Set接口的常见实现类
- HashSet
- 基于哈希表实现,元素无序。
- 允许存储 null 值。
- 添加、删除和查询操作的时间复杂度为 O(1)
- LinkedHashSet
- 基于哈希表和链表实现,维护元素的插入顺序。
- 允许存储 null 值。
- 添加、删除和查询操作的时间复杂度为 O(1)
- TreeSet
- 基于红黑树实现,元素按照自然顺序或指定的比较器排序。
- 不允许存储 null 值。
- 添加、删除和查询操作的时间复杂度为 O(log n)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构