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