SortedMap interface
SortedMap是Map,它按升序维护其条目,这些键根据密钥的自然 Sequences 或创建SortedMap
时提供的Comparator
进行排序。 Object Ordering部分讨论了自然排序和Comparator
。 SortedMap
interface提供常规Map
操作以及以下操作:
-
Range view
—在排序的 Map 上执行任意范围的操作 -
Endpoints
—返回排序后的 Map 中的第一个或最后一个键 -
Comparator access
—返回Comparator
(如果有),用于对 Map 进行排序
以下interface是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 Operations
SortedMap
继承自Map
的操作在排序 Map 和法线 Map 上具有相同的行为,但有两个 exception:
-
排序的 Map 的
Collection
视图上的iterator
操作返回的Iterator
依次遍历集合。 -
Collection
视图的toArray
操作返回的数组按 Sequences 包含键,值或条目。
尽管interface无法保证,但是在所有 Java 平台SortedMap
实现中的Collection
视图的toString
方法都会按 Sequences 返回包含视图的所有元素的字符串。
Standard Constructors
按照惯例,所有通用Map
实现都提供一个采用Map
的标准转换构造函数; SortedMap
实现也不 exception。在TreeMap
中,此构造函数创建一个实例,该实例根据其键的自然 Sequences 对其条目进行排序。这可能是一个错误。最好动态检查以查看指定的Map
实例是否为SortedMap
,如果是,则根据相同的标准(比较器或自然排序)对新 Map 进行排序。因为TreeMap
采用了它所采用的方法,所以它还提供了一个构造函数,该构造函数采用SortedMap
并返回一个新的TreeMap
,该TreeMap
包含与给定的SortedMap
相同的 Map,并根据相同的准则进行了排序。请注意,是由参数的编译时类型(而不是其运行时类型)决定是否优先于普通的map
构造函数调用SortedMap
构造函数。
按照惯例,SortedMap
实现也提供了一个构造器,该构造器采用Comparator
并返回根据指定Comparator
排序的空 Map。如果将null
传递给此构造函数,它将返回Map
,并根据其键的自然 Sequences 对其 Map 进行排序。
与 SortedSet 的比较
由于此interface是SortedSet
的精确Map
模拟,因此SortedSet interface部分中的所有惯用法和代码示例仅需进行少量修改即可应用于SortedMap
。