Set接口的定义
Set 是 Java 集合框架中的一个接口,位于 java.util 包中,表示一个不包含重复元素的集合。
Set集合的特点
- 无重复元素:
Set不允许存储重复的元素。- 元素的唯一性是通过
equals()方法来判断的。
- 无顺序保证:
Set本身并不保证元素的顺序。- 具体的实现类可能会对顺序有不同的处理,例如:
HashSet:无序。LinkedHashSet:按插入顺序。TreeSet:自然顺序或自定义排序。
- 允许存储 null:
- 大多数
Set集合实现允许一个null元素(例如,HashSet)。 TreeSet不允许存储null,因为排序比较时会抛出NullPointerException。
- 大多数
- 线程安全:
Set接口的实现类(如HashSet)不是线程安全的。- 可以使用
Collections.synchronizedSet()创建线程安全的Set。
Set接口的实现类
HashSet:基于哈希表实现,无序,不保证顺序LinkedHashSet:基于哈希表和链表实现,按插入顺序存储。TreeSet:基于红黑树实现,按自然顺序或自定义排序存储ConcurrentSkipListSet:线程安全的Set,按自然顺序或自定义排序存储,基于跳表实现
Set接口的常用方法
添加元素
boolean add(E e):向集合中添加一个元素,如果已存在该元素,则返回false。boolean addAll(Collection<? extends E> c):将指定集合中的所有元素添加到当前集合
删除元素
void clear():清空集合中的所有元素boolean remove(Object o):从集合中移除指定的元素
查询元素
boolean contains(Object o):判断集合中是否包含指定的元素
获取大小
int size():返回集合中的元素个数boolean isEmpty():判空