SortedMap interface

SortedMapMap,它按升序维护其条目,这些键根据密钥的自然 Sequences 或创建SortedMap时提供的Comparator进行排序。 Object Ordering部分讨论了自然排序和ComparatorSortedMapinterface提供常规Map操作以及以下操作:

  • Range view —在排序的 Map 上执行任意范围的操作

  • Endpoints —返回排序后的 Map 中的第一个或最后一个键

  • Comparator access —返回Comparator(如果有),用于对 Map 进行排序

以下interface是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 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