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)

浙公网安备 33010602011771号