Java™ 教程(SortedMap接口)

SortedMap接口

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

  • 范围视图 — 对排序后的map执行任意范围操做
  • 端点 — 返回已排序map中的第一个或最后一个键
  • 比较器访问 — 返回用于排序mapComparator(若是有的话)

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

public interface SortedMap<K, V> extends Map<K, V>{
    Comparator<? super K> comparator();
    SortedMap<K, V> subMap(K fromKey, K toKey);
    SortedMap<K, V> headMap(K toKey);
    SortedMap<K, V> tailMap(K fromKey);
    K firstKey();
    K lastKey();
}

Map操做

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

  • iterator操做在已排序map的任何Collection视图上返回的Iterator按顺序遍历集合。
  • Collection视图的toArray操做返回的数组按顺序包含键、值或条目。

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

标准构造函数

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

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

相比SortedSet

由于这个接口是SortedSet的精确Map模拟,因此SortedSet接口部分中的风格和代码示例都适用于SortedMap,只作了不多的修改。函数


上一篇:SortedSet接口

相关文章
相关标签/搜索