Java集合框架之Set(HashSet、TreeSet)API

Set相对于List是简单的一种集合,继承了Collection接口,它不保存相同的元素,不能保存基本数据类型(int等)。
Set的实现细节可以参考Map,因为Set的实现类都是对应Map实现类的一种封装(HashSet是对HashMap的封装,TreeSet是对TreeMap的封装)。
HashSet(封装HashMap):
Java集合框架之Set(HashSet、TreeSet)API
TreeSet(封装TreeMap):
Java集合框架之Set(HashSet、TreeSet)API
Map要储存键、值两个对象,Set只存储一个对象,当往Set集合中添加新元素时,Set会调用Map的put方法,将新元素作为键,在设置一个默认的值。
Java集合框架之Set(HashSet、TreeSet)API
Java集合框架之Set(HashSet、TreeSet)API

HashSet类底层使用哈希表,按照哈希算法存取集合中的对象元素,存取速度快,存入的元素没有顺序,元素可以为null。
TreeSet类底层使用红黑树,实现了SortedSet接口,会对集合中的对象元素按字典序排序,性能没有HashSet好,元素不可以为null。
⼀般使用HashSet,如果需要排序的功能时,才使用TreeSet。

API:

方法 描述
boolean add(E e) 在集合中添加新元素,重复值不添加
int size() 返回集合中元素数量
boolean remove(Object o) 在集合中删除元素o
void clear() 清空当前集合
boolean isEmpty() 判断集合是否为空
Object clone() 复制当前集合,返回复制体
boolean contains(Object o) 判断是否有元素o
boolean addAll(Collection<? extends E> c) 将c中的所有元素添加到集合中
Object[] toArray() 将集合转化为对象数组
< T > T[] toArray(T[] a) 将集合转化为指定类型的对象数组
boolean containsAll(Collection<?> c) 判断集合中是否有集合c中的全部元素
boolean removeAll(Collection<?> c) 删除集合中所有集合c中出现的元素
String toString() 将集合转化为字符串