Java之Set、HashSet、TreeSet常用Methods

一、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)返回该集合的部分的视图,其元素的范围从 fromElementtoElement
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。

引用自他人博客

猜你喜欢

转载自blog.csdn.net/qq_43229056/article/details/108936991