SortedMap接口
SortedMap是一个按升序维护其条目的Map,根据键的自然顺序或在创建SortedMap
时提供的Comparator
进行排序,SortedMap接口提供常规Map操作和以下操作的操作:
- 范围视图 — 对排序后的
map
执行任意范围操作 - 端点 — 返回已排序
map
中的第一个或最后一个键 - 比较器访问 — 返回用于排序
map
的Comparator
(如果有的话)
下面的接口是SortedSet的Map模拟。
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上的行为相同,但有两个例外:
-
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
,只做了很少的修改。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。