文档

Java™ 教程-Java Tutorials 中文版
SortedMap 接口
Trail: Collections
Lesson: Interfaces

SortedMap 接口

SortedMapMap,它按升序维护其条目,根据键的自然顺序排序,或者根据 SortedMap 创建时提供的 Comparator。自然排序和 ComparatorObject Ordering 部分中讨论。SortedMap 接口提供正常 Map 操作的操作,以及以下操作:

以下接口是 SortedSetMap 模拟。

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 操作

SortedMapMap 继承的操作,在有序 map 和正常 map 的行为完全相同,但有两个例外:

虽然接口无法保证,但所有 Java 平台的 SortedMap 实现中 Collection 视图的 toString 方法,返回包含视图所有元素内容的字符串,按顺序排列。

标准构造函数

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

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

与 SortedSet 的比较

因为此接口是 SortedSet 的精确 Map 模拟,所以 The SortedSet Interface 部分中的所有习惯用法和代码示例都适用于 SortedMap 只做了一些微不足道的修改。


Previous page: The SortedSet Interface
Next page: Summary of Interfaces