- 类型参数:
K- 此map维护的键类型V- 映射值的类型
- 所有父级接口:
Map<K,V>
- 所有已知的子接口:
ConcurrentNavigableMap<K,,V> NavigableMap<K,V>
- 所有已知的实现类:
ConcurrentSkipListMap,TreeMap
Map 进一步在其键上提供 total ordering。该map根据其键的自然排序 或通常在排序映射创建时提供的Comparator 进行排序。当遍历已排序map的集合视图(由 entrySet 、 keySet 和 values 方法返回)时,会反映此顺序。提供了几个额外的操作来利用排序。 (这个接口是SortedSet 的map模拟。)
插入排序map中的所有键必须实现 Comparable 接口(或被指定的比较器接受)。此外,所有此类键必须是 mutually comparable:k1.compareTo(k2)(或 comparator.compare(k1, k2))不得为排序map中的任何键 k1 和 k2 抛出 ClassCastException。试图违反此限制将导致违规方法或构造函数调用抛出 ClassCastException 。
请注意,如果排序映射要正确实现 Map 接口,则排序映射(无论是否提供显式比较器)维护的顺序必须是 consistent with equals。 (有关 consistent with equals 的精确定义,请参阅 Comparable 接口或 Comparator 接口。)之所以如此,是因为 Map 接口是根据 equals 操作定义的,但排序映射使用其 compareTo (或 compare )方法执行所有键比较,因此从排序映射的角度来看,此方法认为相等的两个键是相等的。树图的行为 is 定义明确,即使它的排序与 equals 不一致;它只是不遵守 Map 接口的一般合同。
所有通用排序map实现类都应提供四个“标准”构造方法。尽管无法通过接口指定必需的构造方法,但无法强制执行此建议。所有排序map实现的预期“标准”构造方法是:
- 一个 void(无参数)构造方法,它创建一个空的排序映射,该map根据其键的自然顺序排序。
- 具有
Comparator类型的单个参数的构造函数,它创建一个空的排序映射,该map根据指定的比较器排序。 - 具有
Map类型的单个参数的构造函数,它创建一个具有与其参数相同的键值映射的新映射,并根据键的自然顺序进行排序。 - 具有
SortedMap类型的单个参数的构造函数,它创建一个新的排序映射,具有与输入排序映射相同的键值映射和相同的顺序。
Note:几种方法返回具有受限键范围的子图。这样的范围是 half-open ,也就是说,它们包括它们的低端点但不包括它们的高端点(如果适用)。如果您需要 closed range(包括两个端点),并且密钥类型允许计算给定密钥的后继,只需请求从 lowEndpoint 到 successor(highEndpoint) 的子范围。例如,假设 m 是一个键为字符串的映射。以下成语获取包含 m 中所有键值映射的视图,其键在 low 和 high 之间,包括:
SortedMap<String, V> sub = m.subMap(low, high+"\0");类似的技术可用于生成 open range(不包含任何端点)。以下成语获取包含
m 中所有键值映射的视图,其键在 low 和 high 之间,独占:
SortedMap<String, V> sub = m.subMap(low+"\0", high);
此接口是 Java 集合框架 的成员。
- 自从:
- 1.2
- 参见:
-
内部类总结
-
方法总结
修饰符和类型方法描述Comparator<? super K>返回用于排序此map中的键的比较器,如果此map使用其键的自然排序,则返回null。entrySet()返回此map中包含的映射的Set视图。firstKey()返回当前map中的第一个(最低)键。返回此map部分的视图,其键严格小于toKey。keySet()返回此map中包含的键的Set视图。lastKey()返回当前在此map中的最后一个(最高)键。返回此map部分的视图,其键范围从fromKey(含)到toKey(不包含)。返回此map的键大于或等于fromKey的部分的视图。values()返回此map中包含的值的Collection视图。在接口 java.util.Map 中声明的方法
clear, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, equals, forEach, get, getOrDefault, hashCode, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size
-
方法详情
-
comparator
Comparator <? super K > comparator()返回用于排序此map中的键的比较器,如果此map使用其键的自然排序,则返回null。- 返回:
-
用于排序此map中的键的比较器,或者
null如果此map使用其键的自然排序
-
subMap
返回此map部分的视图,其键范围从fromKey(含)到toKey(不包含)。 (如果fromKey和toKey相等,则返回的map为空。)返回的map受此map支持,因此返回map中的更改会反映在此map中,反之亦然。返回的map支持此map支持的所有可选map操作。返回的映射将在尝试插入其范围之外的键时抛出
IllegalArgumentException。- 参数:
fromKey- 返回map中键的低端点(包括)toKey- 返回map中键的高端点(不包括)- 返回:
-
此map的部分视图,其键范围从
fromKey到toKey不包括在内 - 抛出:
ClassCastException- 如果fromKey和toKey无法使用此map的比较器相互比较(或者,如果map没有比较器,则使用自然排序)。如果无法将fromKey或toKey与当前map中的键进行比较,实现可能会(但不是必须)抛出此异常。NullPointerException- 如果fromKey或toKey为空且此map不允许空键IllegalArgumentException- 如果fromKey大于toKey;或者如果这个map本身有一个限制范围,并且fromKey或toKey位于范围的边界之外
-
headMap
返回此map部分的视图,其键严格小于toKey。返回的map受此map支持,因此返回map中的更改会反映在此map中,反之亦然。返回的map支持此map支持的所有可选map操作。返回的映射将在尝试插入其范围之外的键时抛出
IllegalArgumentException。- 参数:
toKey- 返回map中键的高端点(不包括)- 返回:
-
此map的键严格小于
toKey的部分的视图 - 抛出:
ClassCastException- 如果toKey与此map的比较器不兼容(或者,如果map没有比较器,如果toKey未实现Comparable)。如果无法将toKey与当前map中的键进行比较,实现可能会(但不是必须)抛出此异常。NullPointerException- 如果toKey为空且此map不允许空键IllegalArgumentException- 如果这个map本身有一个限制范围,并且toKey位于范围的边界之外
-
tailMap
返回此map的键大于或等于fromKey的部分的视图。返回的map受此map支持,因此返回map中的更改会反映在此map中,反之亦然。返回的map支持此map支持的所有可选map操作。返回的映射将在尝试插入其范围之外的键时抛出
IllegalArgumentException。- 参数:
fromKey- 返回map中键的低端点(包括)- 返回:
-
此map的键大于或等于
fromKey的部分的视图 - 抛出:
ClassCastException- 如果fromKey与此map的比较器不兼容(或者,如果map没有比较器,如果fromKey未实现Comparable)。如果无法将fromKey与当前map中的键进行比较,实现可能会(但不是必须)抛出此异常。NullPointerException- 如果fromKey为空且此map不允许空键IllegalArgumentException- 如果这个map本身有一个限制范围,并且fromKey位于范围的边界之外
-
firstKey
K firstKey()返回当前map中的第一个(最低)键。- 返回:
- 此map中当前的第一个(最低)键
- 抛出:
NoSuchElementException- 如果这张map是空的
-
lastKey
K lastKey()返回当前在此map中的最后一个(最高)键。- 返回:
- 当前在此map中的最后一个(最高)键
- 抛出:
NoSuchElementException- 如果这张map是空的
-
keySet
返回此map中包含的键的Set视图。该集合的迭代器按升序返回键。该集合由map支持,因此对map的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改map(除了通过迭代器自己的remove操作),迭代的结果是不确定的。该集合支持元素删除,即通过Iterator.remove、Set.remove、removeAll、retainAll和clear操作从map中删除相应的映射。它不支持add或addAll操作。 -
values
Collection <V > values()返回此map中包含的值的Collection视图。集合的迭代器按相应键的升序返回值。集合由map支持,因此对map的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改map(除了通过迭代器自己的remove操作),迭代的结果是不确定的。该集合支持元素删除,即通过Iterator.remove、Collection.remove、removeAll、retainAll和clear操作从map中删除相应的映射。它不支持add或addAll操作。 -
entrySet
返回此map中包含的映射的Set视图。该集合的迭代器以升序键顺序返回条目。该集合由map支持,因此对map的更改会反映在集合中,反之亦然。如果在对集合进行迭代时映射被修改(除了通过迭代器自己的remove操作,或通过迭代器返回的映射条目上的setValue操作),迭代的结果是未定义的。该集合支持元素移除,即通过Iterator.remove、Set.remove、removeAll、retainAll和clear操作从map中移除相应的映射。它不支持add或addAll操作。
-