一、Set
用于存储无序(存和取的顺序不同)非重复元素。
如何做到元素不重复
通过hashCode方法和equals方法来保证元素的唯一性
二、HashSet
HashSet是通过HasMap来实现的,HashMap的输入参数有Key、Value两个组成,在实现HashSet的时候,保持HashMap的Value为常量,相当于在HashMap中只对Key对象进行处理。
常用方法
- boolean add(E e) 将指定的元素添加到此集合(如果尚未存在)。若已存在,返回false。
- void clear() 从此集合中删除所有元素。
- boolean contains(Object obj) 如果此集合包含指定的元素,则返回
true
。 - boolean isEmpty() 如果此集合不包含元素,则返回
true
。 - Iterator iterator() 返回此集合中元素的迭代器。
- boolean remove(Object obj) 如果存在,则从该集合中删除指定的元素。
- int size() 返回此集合中的元素数(其基数)。
三、TreeSet
常用方法
boolean |
add(E e) 将指定的元素添加到此集合(如果尚未存在) |
---|---|
E |
ceiling(E e) 返回此集合中大于或等于给定元素的最小元素,如果没有此元素,则返回 null 。 |
void |
clear() 从此集合中删除所有元素。 |
Object |
clone() 返回此 TreeSet 实例的浅拷贝。 |
Comparator<? super E> |
comparator() 返回用于对该集合中的元素进行排序的比较器,或null, 如果此集合使用其元素的natural ordering【自然排序】 。 |
boolean |
contains(Object o) 如果此集合包含指定的元素,则返回 true 。 |
Iterator<E> |
descendingIterator() 以降序返回该集合中的元素的迭代器。 |
NavigableSet<E> |
descendingSet() 返回此集合中包含的元素的反向排序视图。 |
E |
first() 返回此集合中当前的第一个(最低)元素。 |
E |
floor(E e) 返回此集合中最大的元素小于或等于给定元素,如果没有这样的元素,则返回 null 。 |
SortedSet<E> |
headSet(E toElement) 返回此集合的部分的视图,其元素严格小于 toElement 。 |
NavigableSet<E> |
headSet(E toElement, boolean inclusive) 返回该集合的部分的视图,其元素小于(或等于,如果 inclusive 为真) toElement 。 |
E |
higher(E e) 返回严格大于给定元素的该集合中的最小元素,如果没有此元素则返回 null 。 |
boolean |
isEmpty() 如果此集合不包含元素,则返回 true 。 |
Iterator<E> |
iterator() 以升序返回该集合中的元素的迭代器。 |
E |
last() 返回此集合中当前的最后(最高)元素。 |
E |
lower(E e) 返回这个集合中最大的元素严格小于给定的元素,如果没有这样的元素,则返回 null 。 |
E |
pollFirst() 检索并删除第一个(最低)元素,或返回 null 如果该集合为空。 |
E |
pollLast() 检索并删除最后一个(最高)元素,如果此集合为空,则返回 null 。 |
boolean |
remove(Object o) 如果存在,则从该集合中删除指定的元素。 |
int |
size() 返回此集合中的元素数(其基数)。 |
NavigableSet<E> |
subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) 返回该集合的部分的视图,其元素的范围从 fromElement 到 toElement 。 |
SortedSet<E> |
subSet(E fromElement, E toElement) 返回此集合的部分的视图,其元素的范围从 fromElement (含)到 toElement ,排他。 |
SortedSet<E> |
tailSet(E fromElement) 返回此组件的元素大于或等于 fromElement 的部分的视图。 |
NavigableSet<E> |
tailSet(E fromElement, boolean inclusive) 返回此集合的部分的视图,其元素大于(或等于,如果 inclusive 为真) fromElement 。 |
TreeSet集合排序的两种方式:
一,让元素自身具备比较性。
也就是元素需要实现Comparable接口,覆盖compareTo 方法。
这种方式也作为元素的自然排序,也可称为默认排序。
二,让容器自身具备比较性,自定义比较器。
需求:当元素自身不具备比较性,或者元素自身具备的比较性不是所需的。
那么这时只能让容器自身具备。
定义一个类实现Comparator 接口,覆盖compare方法。
并将该接口的子类对象作为参数传递给TreeSet集合的构造函数。
当Comparable比较方式,及Comparator比较方式同时存在,以Comparator
比较方式为主。
注: 排序部分和TreeMap很相似,如何重写自然排序和定制排序,可看 博客
小记
看到array,就要想到角标。
看到link,就要想到first,last。
看到hash,就要想到hashCode,equals。
看到tree,就要想到两个接口。Comparable,Comparator。
引用自他人博客