SortedMap是一个按升序维护其条目的Map,根据键的天然顺序或在建立SortedMap
时提供的Comparator
进行排序,SortedMap接口提供常规Map操做和如下操做的操做:html
map
执行任意范围操做map
中的第一个或最后一个键map
的Comparator
(若是有的话)下面的接口是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(); }
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
的精确Map
模拟,因此SortedSet
接口部分中的风格和代码示例都适用于SortedMap
,只作了不多的修改。函数