NavigableSet接口源码理解

35 篇文章 0 订阅
34 篇文章 0 订阅


前言

本文章帮助大家对NavigableSet接口的理解。


一、概述

NavigableSet意为可导航集合(无特殊说明,本文章“集合”指NavigableSet)。顾名思义,就是同一类对象(元素)的有序“可导航”集合体。它继承于SortedSet接口,其元素是有顺序的,使用其迭代器进行升序遍历。它可更精确地取子集及元素,可取得倒序的可导航集。参考SortedSet接口。

二、源码理解

package java.util;
import java.util.NavigableSet;

使用NavigableSet接口时,需引入此包。

NavigableSet接口

public interface NavigableSet<E> extends SortedSet<E> { /*...*/ }

使用接口时传入泛型E,为集合元素的类型。继承了SortedSet接口,使集合具有SortedSet集合的表现。

NavigableSet方法

lower

E lower(E e);

返回小于元素e的最大元素。若无符合条件的元素,返回空。

若参数元素不能和集合元素比较,可抛出ClassCastException异常;若有参数为空而集合不允许有空值,则抛出NullPointerException异常。

floor

E floor(E e);

返回小于等于元素e的最大元素。若无符合条件的元素,返回空。

若参数元素不能和集合元素比较,可抛出ClassCastException异常;若有参数为空而集合不允许有空值,则抛出NullPointerException异常。

higher

E higher(E e);

返回大于元素e的最大元素。若无符合条件的元素,返回空。

若参数元素不能和集合元素比较,可抛出ClassCastException异常;若有参数为空而集合不允许有空值,则抛出NullPointerException异常。

ceiling

E ceiling(E e);

返回大于等于元素e的最大元素。若无符合条件的元素,返回空。

若参数元素不能和集合元素比较,可抛出ClassCastException异常;若有参数为空而集合不允许有空值,则抛出NullPointerException异常。

pollFirst

E pollFirst();

移除并返回集合的最小值(第一个元素)。若集合为空,返回空。

pollLast

E pollLast();

移除返回集合的最大值(最后一个元素)。若集合为空,返回空。

iterator

Iterator<E> iterator();

重写Set接口的Iterator<E> iterator()方法,参考Set.iterator方法。

返回遍历元素的迭代器,升序遍历。

descendingSet

NavigableSet<E> descendingSet();

返回包含此集合元素的降序可导航集合。有s.descendingSet().descendingSet() == ss.descendingSet().comparator() == Collections.reverseOrder(s.comparator())(参考Collections.reverseOrder方法)。

重点:返回集合受此集合支撑,对返回集合的修改也会反映到此集合上,反之亦然。当其中一个集合在使用迭代器遍历时,其中一个集合的修改(非迭代器删除操作)会使遍历行为未定义。

descendingIterator

Iterator<E> descendingIterator();

返回遍历元素的迭代器,降序遍历。有s.descendingIterator() == s.descendingSet().iterator()

subSet

SortedSet<E> subSet(E fromElement, E toElement);

重写SortedSet接口的SortedSet<E> subSet(E fromElement, E toElement)方法,参考SortedSet.subSet方法。

返回集合的一部分的视图(也为有序集合),其从元素fromElement开始(包含)到toElement结束(不包含)。同SortedSet接口的SortedSet<E> subSet(E fromElement, E toElement)方法。

NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive);

返回集合的一部分的视图(也为可导航集合),其从元素fromElement开始(fromInclusivetrue是包含)到toElement结束(toInclusivetrue是包含)。类似SortedSet<E> subSet(E fromElement, E toElement)方法。

headSet

SortedSet<E> headSet(E toElement);

重写SortedSet接口的SortedSet<E> headSet(E toElement)方法,参考SortedSet.headSet方法。

返回集合的一部分的视图(也为有序集合),其从第一个元素开始(包含)到toElement结束(不包含)。同SortedSet接口的SortedSet<E> headSet(E toElement)方法。

NavigableSet<E> headSet(E toElement, boolean inclusive);

返回集合的一部分的视图(也为可导航集合),其从第一个元素开始(包含)到toElement结束(inclusivetrue为包含)。类似SortedSet<E> headSet(E toElement)方法。

tailSet

SortedSet<E> tailSet(E fromElement);

重写SortedSet接口的SortedSet<E> tailSet(E fromElement)方法,参考SortedSet.tailSet方法。

返回集合的一部分的视图(也为有序集合),其从元素fromElement开始(包含)到最后一个元素结束(包含)。同SortedSet接口的SortedSet<E> tailSet(E fromElement)方法。

NavigableSet<E> tailSet(E fromElement, boolean inclusive);

返回集合的一部分的视图(也为可导航集合),其从元素fromElement开始(inclusivetrue为包含)到最后一个元素结束(包含)。类似SortedSet<E> tailSet(E fromElement)方法。


总结

新人源码理解,望大家多多指点。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值