Java源码解析之SortedMap和NavigableMap
由于乱序的数据对查找不利,例如无法使用二分法等降低算法的时间复杂度,如果数据在插入时就排好序,查找的性能聚会提升很多。sortedMap接口就是为这种有序的数据服务的。
二、sortedMap接口sortedMap接口需要数据的key支持Comparable,或者可以被指定的Comparator接受。sortedMap主要提供了以下方法:
// 返回排序数据所用的ComparatorComparator<? super K> comparator();// 返回在[fromKey, toKey)之间的数据SortedMap<K,V> subMap(K fromKey, K toKey);// 返回从第一个元素到toKey之间的数据SortedMap<K,V> headMap(K toKey);// 返回从fromKey到末尾之间的数据SortedMap<K,V> tailMap(K fromKey);//返回第一个数据的keyK firstKey();//返回最后一个数据的keyK lastKey();
SortedMap主要提供了获取子集,以及获取最大值(最后一个值)和最小值(第一个值)的方法。但这仅仅是排序数据能提供的便利的一小部分,在接下来分析的NavigableMap中,我们还会看到更多的功能。
SortedMap提供了获取最大值与最小值的方法,但对于一个已经排序的数据集,除了最大值与最小值之外,我们可以对任何一个元素,找到比它小的值和比它大的值,还可以按照按照原有的顺序倒序排序等。NavigableMap就为我们提供了这些功能。
三、NavigableMap接口我们来看看NavigableMap主要有哪些方法
// 找到第一个比指定的key小的值Map.Entry<K,V> lowerEntry(K key);// 找到第一个比指定的key小的keyK lowerKey(K key);// 找到第一个小于或等于指定key的值Map.Entry<K,V> floorEntry(K key);// 找到第一个小于或等于指定key的keyK floorKey(K key);// 找到第一个大于或等于指定key的值Map.Entry<K,V> ceilingEntry(K key);K ceilingKey(K key);// 找到第一个大于指定key的值Map.Entry<K,V> higherEntry(K key);K higherKey(K key);// 获取最小值Map.Entry<K,V> firstEntry();// 获取最大值Map.Entry<K,V> lastEntry();// 删除最小的元素Map.Entry<K,V> pollFirstEntry();// 删除最大的元素Map.Entry<K,V> pollLastEntry();//返回一个倒序的MapNavigableMap<K,V> descendingMap();// 返回一个Navigable的key的集合,NavigableSet和NavigableMap类似NavigableSet<K> navigableKeySet();// 对上述集合倒序NavigableSet<K> descendingKeySet();
到此这篇关于Java源码解析之SortedMap和NavigableMap的文章就介绍到这了,更多相关Java SortedMap和NavigableMap内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!
相关文章:
1. IDEA 使用mybatis插件Free Mybatis plugin的步骤(推荐)2. 解决idea使用maven编译正常但是运行项目时却提示很多jar包找不到的问题3. idea的easyCode的 MybatisPlus模板的配置详解4. 一篇文章带你解决 IDEA 每次新建项目 maven home directory 总是改变的问题5. 关于IDEA git 只有Commit没有Push的问题6. 一文读懂IDEA里面的Artifact到底是什么7. Intellij IDEA 2019 最新乱码问题及解决必杀技(必看篇)8. IDEA 使用 SpotBugs 找出你代码中的bug问题9. Hadoop 使用IntelliJ IDEA 进行远程调试代码的配置方法10. Java并发中的Fork/Join 框架机制详解

网公网安备