NavigableSet接口

第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的"临界"性质,就可以很容易理解这些方法了。

发布了16 篇原创文章 · 获赞 0 · 访问量 298

猜你喜欢

转载自blog.csdn.net/kubiderenya/article/details/105282431