资讯专栏INFORMATION COLUMN

Java™ 教程(SortedMap接口)

JessYanCoding / 3222人阅读

SortedMap接口

SortedMap是一个按升序维护其条目的Map,根据键的自然顺序或在创建SortedMap时提供的Comparator进行排序,SortedMap接口提供常规Map操作和以下操作的操作:

范围视图 — 对排序后的map执行任意范围操作

端点 — 返回已排序map中的第一个或最后一个键

比较器访问 — 返回用于排序mapComparator(如果有的话)

下面的接口是SortedSet的Map模拟。

public interface SortedMap extends Map{
    Comparator comparator();
    SortedMap subMap(K fromKey, K toKey);
    SortedMap headMap(K toKey);
    SortedMap tailMap(K fromKey);
    K firstKey();
    K lastKey();
}
Map操作

SortedMap继承自Map的操作在已排序map和常规的map上的行为相同,但有两个例外:

iterator操作在已排序map的任何Collection视图上返回的Iterator按顺序遍历集合。

Collection视图的toArray操作返回的数组按顺序包含键、值或条目。

虽然接口不能保证这一点,但是Collection视图在所有Java平台的SortedMap实现中的toString方法按顺序返回一个包含视图所有元素的字符串。

标准构造函数

按照惯例,所有通用Map实现都提供一个接受Map的标准转换构造函数,SortedMap实现也不例外。在TreeMap中,这个构造函数创建一个实例,该实例根据键的自然顺序对其条目进行排序,这可能是个错误。最好动态检查指定的Map实例是否是SortedMap,如果是,则根据相同的标准(比较器或自然顺序)对新map排序。因为TreeMap采用了它所采用的方法,所以它还提供了一个构造函数,该构造函数接受SortedMap并返回一个新的TreeMap,其中包含与给定SortedMap相同的映射,按照相同的标准排序。注意,决定是否优先调用SortedMap构造函数而不是普通map构造函数的是参数的编译时类型,而不是运行时类型。

SortedMap实现还按照约定提供了一个构造函数,该构造函数接受Comparator并返回一个根据指定的Comparator排序的空map,如果将null传递给这个构造函数,它将返回一个Map,根据键的自然顺序对映射进行排序。

相比SortedSet

因为这个接口是SortedSet的精确Map模拟,所以SortedSet接口部分中的风格和代码示例都适用于SortedMap,只做了很少的修改。

上一篇:SortedSet接口

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75538.html

相关文章

  • Java教程(集合接口

    集合接口 核心集合接口封装了不同类型的集合,如下图所示,这些接口允许独立于其表示的细节来操纵集合,核心集合接口是Java集合框架的基础,如下图所示,核心集合接口形成层次结构。 showImg(https://segmentfault.com/img/bVbntJW?w=402&h=146); Set是一种特殊的Collection,SortedSet是一种特殊的Set,依此类推,另请注意,层次结构...

    elisa.yang 评论0 收藏0
  • Java TreeMap 源码解析

    摘要:源码剖析由于红黑树的操作我这里不说了,所以这里基本上也就没什么源码可以讲了,因为这里面重要的算法都是,这里的是指,他们是算法导论的作者,也就是说里面算法都是参照算法导论的伪代码。因为红黑树是平衡的二叉搜索树,所以其包含操作的时间复杂度都为。 本文章首发于个人博客,鉴于sf博客样式具有赏心悦目的美感,遂发表于此,供大家学习、批评。本文还在不断更新中,最新版可移至个人博客。? 继上篇文章...

    rubyshen 评论0 收藏0
  • Java 集合Hashtable源码深入解析

    摘要:分别获取正序反序的键集。是用来实现机制的第部分源码解析基于为了更了解的原理,下面对源码代码作出分析。实现了迭代器和枚举两个接口获取的迭代器若的实际大小为则返回空迭代器对象否则,返回正常的的对象。 概要 前面,我们已经系统的对List进行了学习。接下来,我们先学习Map,然后再学习Set;因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSe...

    Turbo 评论0 收藏0
  • Java教程(目录)

    Java™ 教程 Java教程是为JDK 8编写的,本页面中描述的示例和实践没有利用在后续版本中引入的改进。 Java教程是希望使用Java编程语言创建应用程序的程序员的实用指南,其中包括数百个完整的工作示例和数十个课程,相关课程组被组织成教程。 覆盖基础知识的路径 这些教程以书籍的形式提供,如Java教程,第六版,前往Amazon.com购买。 入门 介绍Java技术和安装Java开发软件并使用...

    lifesimple 评论0 收藏0
  • TreeMap 源码分析

    摘要:当往中放入新的键值对后,可能会破坏红黑树的性质。修复操作要重新使红黑树恢复平衡,修复操作的源码分析如下方法分析如下上面对部分代码逻辑就行了分析,通过配图的形式解析了每段代码逻辑所处理的情况。四总结本文可以看做是本人红黑树详细分析一文的延续。 一、简介 TreeMap最早出现在JDK 1.2中,是 Java 集合框架中比较重要一个的实现。TreeMap 底层基于红黑树实现,可保证在log...

    chaos_G 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<