第1部分 NavigableSet接口介绍
NavigableSet接口简介
NavigableSet继承了SortedSet,因此具备SortedSet,Set, Collection, Iterable接口的方法属性。
Navigable译为可导航的,提供了"边界"处理,以及提供了一个逆序迭代器。
NavigableSet接口常用API
修饰语和返回类型 | 自身方法 | 描述 |
---|---|---|
E | lower(E e) | 获取小于e的最大元素 |
E | floor(E e) | 获取小于或等于e的最大元素 |
E | ceiling(E e) | 获取大于或等于e的最小元素 |
E | higher(E e) | 获取大于e的最小元素 |
E | pollFirst(E e) | 移除并返回首元素 |
E | pollLast(E e) | 移除并返回尾元素 |
NavigableSet<E> | descendingSet() | 获取元素逆序(降序)集合 |
Iterator<E> | descendingIterator() | 获取逆序迭代器 |
NavigableSet<E> | subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive | 根据给定区间获取元素集合 |
NavigableSet<E> | headSet(E toElement, boolean inclusive) | 获取元素首部集合 |
NavigableSet<E> | tailSet(E fromElement, boolean inclusive) | 获取元素尾部集合 |
从这些API中可以看出,NavigableSet译为可导航集合,相比SortedSet提供了获取临近元素,移除首尾元素,以及根据给定参数判断区间边界的方法。总的来说,NavigableSet相比SortedSet多了层“临界”的意思。
第2部分 NavigableSet接口数据结构
NavigableSet接口的继承关系
java.lang.Object
↳ java.lang.Iterable<E>
↳ java.util.Collection<E>
↳ java.util.Set<String>
↳ java.util.SortedSet<E>
↳
public interface NavigableSet<E> extends SortedSet<E> {}
NavigableSet接口的关系
图1 NavigableSet接口的关系图
第3部分 NavigableSet接口源码解析(基于JDK-8u201)
public interface NavigableSet<E> extends SortedSet<E> {
E lower(E e);
E floor(E e);
E ceiling(E e);
E higher(E e);
E pollFirst();
E pollLast();
NavigableSet<E> descendingSet();
Iterator<E> descendingIterator();
//Inclusive为包含的意思,以下三个方法,都用给定参数,判断边界是否要被包含
NavigableSet<E> subSet(E fromElement, boolean fromInclusive,
E toElement, boolean toInclusive);
NavigableSet<E> headSet(E toElement, boolean inclusive);
NavigableSet<E> tailSet(E fromElement, boolean inclusive);
/**********************以下方法分别继承自Iterable和SortedSet********/
Iterator<E> iterator();
SortedSet<E> subSet(E fromElement, E toElement);
SortedSet<E> headSet(E toElement);
SortedSet<E> tailSet(E fromElement);
}
了解Navigable的"临界"性质,就可以很容易理解这些方法了。