Set
Set 继承于 Collection 接口,是一个不允许出现重复元素,并且无序的集合,主要 HashSet 和 TreeSet 两大实现类。
在判断重复元素的时候,Set 集合会调用 hashCode()和 equal()方法来实现。
- 有序集合:
集合里的元素可以根据 key 或 index 访问 (List、Map) - 无序集合:
集合里的元素只能遍历。(Set)
HashSet 和 TreeSet 底层数据结构
- HashSet
哈希表结构,主要利用 HashMap 的 key 来存储元素,计算插入元素的 hashCode 来获取元素在集合中的位置; - TreeSet
红黑树结构,每一个元素都是树中的一个节点,插入的元素都会进行排序;
Set接口常用方法
Set接口继承Collection有以下方法:
添加:
删除:
获取长度
判断
获取迭代器
集合转数组
public interface Set<E> extends Collection<E> {
//添加
boolean add(E e);
boolean addAll(Collection<? extends E> c);
//删除
boolean remove(Object o);
boolean removeAll(Collection<?> c);
void clear();
//获取长度
int size();
//判断
boolean isEmpty();
boolean contains(Object o);
boolean containsAll(Collection<?> c);
boolean retainAll(Collection<?> c);
//判断元素是否重复,为子类提高重写方法
boolean equals(Object o);
int hashCode();
//获取Set集合的迭代器
Iterator<E> iterator();
//把集合转换成数组
Object[] toArray();
<T> T[] toArray(T[] a);
}