类介绍
类定位
NavigableSet
类是在SortedSet
类的基础上又做了补充。
在SortedSet
的使用中我们遇到了一些问题:
- 求子集合的过程中传入的范围都是左闭右开的,不能定制,太难受
-
SortedSet
虽然能通过last()
获得最后一位,但是反向遍历还是存在不方便。只能通过:Collection.reverseOrder()
和SortedSet
的构造函数以原集合为蓝本创建新对象实现。 - 在选择范围时如果是负无穷大到某个数这样的区间没法求解。
所以我们在SortedSet
的基础上做了完善。
注意:逆序遍历时的时间开销一般要比顺序遍历的时间开销大
类继承关系分析
我们直接上idea的类关系图吧:

NavigableSet
直接继承SortedSet
,在SortedSet
的基础上增加了一些新方法。
类使用方法
在实现SortedSet
的基础上再增加对新方法的实现呗。
类注意事项
注意:
-
NavigableSet
中可以有null
,但是有时候null
会影响判断,你不知道那个元素就是null
还是没有了然后返回null
。所以,能不支持null
就不支持null
- 这个类的注释中如果支持
null
可以用contains(null)
帮助判断,但是如果按照这个逻辑,在Collection
中也可以支持,看了一下,作者还真不太一样哈。
源码介绍
方法介绍
E lower(E e);
返回比e
小的。无元素返回null
E floor(E e);
小于等于。没有返回null
E ceiling(E e);
大于等于。没有返回null
E higher(E e);
大于。没有返回null
E pollFirst();
对头(最小的)出队。集合为空返回null
。
E pollLast();
对尾(最大的)出队。集合为空返回null
。
Iterator<E> iterator();
NavigableSet<E> descendingSet();
返回一个逆序的,以原数据为蓝本,对结构的修改会互相影响。
Iterator<E> descendingIterator();
逆序的Iterator
。
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);
新增了控制参数
网友评论