SortedMap是一个Map,它按键的自然顺序或创建SortedMap时提供的Comparator的升序维护其条目。对象排序部分讨论了自然排序和ComparatorSortedMap接口提供常规Map操作以及以下操作:

  • Range view —在排序的映射上执行任意范围的操作
  • Endpoints —返回排序后的映射中的第一个或最后一个键
  • Comparator access—返回用于对Map进行排序的Comparator(如果有)。

以下接口是SortedSetMap类似物。

  1. public interface SortedMap<K, V> extends Map<K, V>{
  2. Comparator<? super K> comparator();
  3. SortedMap<K, V> subMap(K fromKey, K toKey);
  4. SortedMap<K, V> headMap(K toKey);
  5. SortedMap<K, V> tailMap(K fromKey);
  6. K firstKey();
  7. K lastKey();
  8. }

Map操作

Map继承的SortedMap操作在排序映射和一般映射上具有相同的行为,但有两个例外:

  • iterator操作在任何排序的映射的“Collection”视图上返回的Iterator将按顺序遍历集合。
  • Collection视图的toArray操作返回的数组按顺序包含键,值或条目。

尽管接口无法保证,但是在所有Java平台的SortedMap实现中,Collection视图的toString方法将按顺序返回包含视图的所有元素的字符串。

标准构造

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

与SortedSet的比较

因为此接口是SortedSet的精确Map类似物,所以SortedSet接口部分中的所有惯用法和代码示例仅需进行少量修改即可应用于SortedMap