一、Set定义
Set描述的是 不可以存放重复元素,元素存取是无序 的集合。
- 不能有两个引用指向同一个对象,或两个指向 null 的引用。如果对象 a 和 b 的引用满足条件 a.equals(b),那么这两个对象也不能同时出现在Set集合中。
- 多数通用的 Set 实现都不会对元素排序,但并不禁止使用有序集(SortedSet 和 LinkedHashSet 就有顺序)
- Set 与 List 等有序集合不同,一般认为,Set 的 contains 方 法,不论以常数时间还是以对数时间评判,运行效率都高。
Set在java.util.Set中定义。
public interface Set<E> extends Collection<E>
二、Set中定义常用方法
1. 新增元素
(1)新增一个元素
boolean add(E e);
(2)把指定集合参数中的元素添加达到Set中。注:原集合中已存在的元素,不会重复添加的。
boolean addAll(Collection<? extends E> c);
(3)集合A仅保留指定集合参数B中包含的元素,也就是说:从此集合A中移除集合参数B中不包含的所有元素。
boolean retainAll(Collection<?> c);
【注意】:add() 和 addAll() 方法必须遵守无重复原则:如果集中已经有某个元素,就不能再次添加。因此,意味着add/addall元素不一定会修改Set集,add() 和 addAll() 方法,在改变集合时返回 true,否则返回 false。
2. 查询元素
(1)判断集合中是否存在指定对象
boolean contains(Object o);
(2)判断集合A中是否存在 指定集合参数B中的内容
boolean containsAll(Collection<?> c);
3. 删除元素
(1)从集合中删除指定元素
boolean remove(Object o);
(2)从集合A中删除 指定的集合参数B中存在的所有元素
boolean removeAll(Collection<?> c);
(3)清空集合
void clear();
4. 判断集合大小
int size();
boolean isEmpty();
5. Set集合转换为数组
Object[] toArray();
<T> T[] toArray(T[] a); //类似Collection中的toArray方法