本文章帮助大家对NavigableSet
接口的理解。
NavigableSet
意为可导航集合(无特殊说明,本文章“集合”指NavigableSet
)。顾名思义,就是同一类对象(元素)的有序“可导航”集合体。它继承于SortedSet
接口,其元素是有顺序的,使用其迭代器进行升序遍历。它可更精确地取子集及元素,可取得倒序的可导航集。参考SortedSet
接口。
package java.util;
import java.util.NavigableSet;
使用NavigableSet
接口时,需引入此包。
public interface NavigableSet<E> extends SortedSet<E> { /*...*/ }
使用接口时传入泛型E
,为集合元素的类型。继承了SortedSet
接口,使集合具有SortedSet
集合的表现。
E lower(E e);
返回小于元素e
的最大元素。若无符合条件的元素,返回空。
若参数元素不能和集合元素比较,可抛出ClassCastException
异常;若有参数为空而集合不允许有空值,则抛出NullPointerException
异常。
E floor(E e);
返回小于等于元素e
的最大元素。若无符合条件的元素,返回空。
若参数元素不能和集合元素比较,可抛出ClassCastException
异常;若有参数为空而集合不允许有空值,则抛出NullPointerException
异常。
E higher(E e);
返回大于元素e
的最大元素。若无符合条件的元素,返回空。
若参数元素不能和集合元素比较,可抛出ClassCastException
异常;若有参数为空而集合不允许有空值,则抛出NullPointerException
异常。
E ceiling(E e);
返回大于等于元素e
的最大元素。若无符合条件的元素,返回空。
若参数元素不能和集合元素比较,可抛出ClassCastException
异常;若有参数为空而集合不允许有空值,则抛出NullPointerException
异常。
E pollFirst();
移除并返回集合的最小值(第一个元素)。若集合为空,返回空。
E pollLast();
移除返回集合的最大值(最后一个元素)。若集合为空,返回空。
Iterator<E> iterator();
重写Set
接口的Iterator
方法,参考Set.iterator
方法。
返回遍历元素的迭代器,升序遍历。
NavigableSet<E> descendingSet();
返回包含此集合元素的降序可导航集合。有s.descendingSet().descendingSet() == s
、s.descendingSet().comparator() == Collections.reverseOrder(s.comparator())
(参考Collections.reverseOrder
方法)。
重点:返回集合受此集合支撑,对返回集合的修改也会反映到此集合上,反之亦然。当其中一个集合在使用迭代器遍历时,其中一个集合的修改(非迭代器删除操作)会使遍历行为未定义。
Iterator<E> descendingIterator();
返回遍历元素的迭代器,降序遍历。有s.descendingIterator() == s.descendingSet().iterator()
。
SortedSet<E> subSet(E fromElement, E toElement);
重写SortedSet
接口的SortedSet
方法,参考SortedSet.subSet
方法。
返回集合的一部分的视图(也为有序集合),其从元素fromElement
开始(包含)到toElement
结束(不包含)。同SortedSet
接口的SortedSet
方法。
NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive);
返回集合的一部分的视图(也为可导航集合),其从元素fromElement
开始(fromInclusive
为true
是包含)到toElement
结束(toInclusive
为true
是包含)。类似SortedSet
方法。
SortedSet<E> headSet(E toElement);
重写SortedSet
接口的SortedSet
方法,参考SortedSet.headSet
方法。
返回集合的一部分的视图(也为有序集合),其从第一个元素开始(包含)到toElement
结束(不包含)。同SortedSet
接口的SortedSet
方法。
NavigableSet<E> headSet(E toElement, boolean inclusive);
返回集合的一部分的视图(也为可导航集合),其从第一个元素开始(包含)到toElement
结束(inclusive
为true
为包含)。类似SortedSet
方法。
SortedSet<E> tailSet(E fromElement);
重写SortedSet
接口的SortedSet
方法,参考SortedSet.tailSet
方法。
返回集合的一部分的视图(也为有序集合),其从元素fromElement
开始(包含)到最后一个元素结束(包含)。同SortedSet
接口的SortedSet
方法。
NavigableSet<E> tailSet(E fromElement, boolean inclusive);
返回集合的一部分的视图(也为可导航集合),其从元素fromElement
开始(inclusive
为true
为包含)到最后一个元素结束(包含)。类似SortedSet
方法。
新人源码理解,望大家多多指点。