Java源码解析之SortedMap和NavigableMap

网友投稿 284 2022-10-24


Java源码解析之SortedMap和NavigableMap

一、前言

由于乱序的数据对查找不利,例如无法使用二分法等降低算法的时间复杂度,如果数据在插入时就排好序,查找的性能聚会提升很多。sortedMap接口就是为这种有序的数据服务的。

二、sortedMap接口

sortedMap接口需要数据的key支持Comparable,或者可以被指定的Comparator接受。sortedMap主要提供了以下方法:

// 返回排序数据所用的Comparator

Comparator super K> comparator();

// 返回在[fromKey, toKey)之间的数据

SortedMap subMap(K fromKey, K toKey);

// 返回从第一个元素到toKey之间的数据

SortedMap headMap(K toKey);

// 返回从http://fromKey到末尾之间的数据

SortedMap tailMap(K fromKey);

//返回第一个数据的key

K firstKey();

//返回最后一个数据的key

K lastKey();

SortedMap主要提供了获取子集,以及获取最大值(最后一个值)和最小值(第一个值)的方法。但这仅仅是排序数据能提供的便利的一小部分,在接下来分析的NavigableMap中,我们还会看到更多的功能。

SortedMap提供了获取最大值与最小值的方法,但对于一个已经排序的数据集,除了最大值与最小值之外,我们可以对任何一个元素,找到比它小的值和比它大的值,还可以按照按照原有的顺序倒序排序等。NavigableMap就为我们提供了这些功能。

三、NavigableMap接口

我们来看看NavigableMap主要有哪些方法

// 找到第一个比指定的key小的值

Map.Entry lowerEntry(K key);

// 找到第一个比指定的key小的key

K lowerKey(K key);

// 找到第一个小于或等于指定key的值

Map.Entry floorEntry(K key);

// 找到第一个小于或等于指定kehttp://y的key

K floorKey(K key);

// 找到第一个大于或等于指定key的值

Map.Entry ceilingEntry(K key);

K ceilingKey(K key);

// 找到第一个大于指定key的值

Map.Entry higherEntry(K key);

K higherKey(K key);

// 获取最小值

Map.Entry firstEntry();

// 获取最大值

Map.Entry lastEntry();

// 删除最小的元素

Map.Entry pollFirstEntry();

// 删除最大的元素

Map.Entry pollLastEntry();

//返回一个倒序的Map

NavigableMap descendingMap();

// 返回一个Navigable的key的集合,NavigableSet和NavigableMap类似

NavigableSet navigableKeySet();

// 对上述集合倒序

NavigableSet descendingKeySet();


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:第七章 构建安全的园区网络
下一篇:第四章使用静态路由连通全网
相关文章

 发表评论

暂时没有评论,来抢沙发吧~