K
- 由此地图维护的键的类型
V
- 映射值的类型
public interface SortedMap<K,V> extends Map<K,V>
Map
进一步提供其键上的总排序 。
地图根据其键的natural ordering或通过在分类地图创建时提供的Comparator
进行排序。
当迭代排序的地图的集合视图(由keySet
和values
方法返回)时,将entrySet
此顺序。
提供了几个额外的操作来利用订购。
(此接口是在地图类似物SortedSet
)。
插入排序映射的所有键必须实现Comparable
接口(或被指定的比较器接受)。 另外,所有这些键必须是可互相比较的 : k1.compareTo(k2)
(或comparator.compare(k1, k2)
)不得抛出ClassCastException
任何键k1
和k2
在分类图。 尝试违反此限制将导致违规方法或构造函数调用抛出ClassCastException
。
请注意,如果有序映射要正确实现由有序映射(无论是否提供了明确的比较器)保持的顺序必须与equals一致 Map
接口。 (请参阅Comparable
接口或Comparator
接口的一致的精确定义与equals)。这是因为该Map
接口在来定义equals
的操作,但一个有序映射使用其执行所有关键比compareTo
(或compare
)方法因此,从排序图的角度来看,通过这种方法认为相等的两个关键字是相等的。 树图的行为是明确定义的,即使其顺序与equals不一致; 它只是没有遵守Map
接口的总体合同。
所有通用排序映射实现类应提供四个“标准”构造函数。 无法通过接口指定必要的构造函数来执行此建议。 所有排序地图实现的预期“标准”构造函数是:
Comparator
,它创建一个根据指定的比较器排序的空的排序映射。 Map
的单个参数的构造Map
,其创建具有与其参数相同的键值映射的新映射,根据密钥的自然排序进行排序。 SortedMap
的单个参数的构造SortedMap
,其创建具有与输入排序映射相同的键值映射和相同顺序的新的排序映射。 注意 :几个方法返回带有限制键范围的子图。 这种范围是半开放的 ,也就是说,它们包括其低端点,但不包括其高端点(如适用)。 如果您需要一个封闭的范围 (包括两个端点),并且键类型允许计算给定键的后继,只需要从lowEndpoint
到successor(highEndpoint)
的子范围。 例如,假设m
是其键是字符串的地图。 以下成语获得包含m中所有键值映射的m
,其关键在low
和high
之间,包括:
SortedMap<String, V> sub = m.subMap(low, high+"\0");
可以使用类似的技术来生成开放范围 (其不包含端点)。
以下成语获得包含m中所有键值映射的m
,其关键在low
和high
之间,独占:
SortedMap<String, V> sub = m.subMap(low+"\0", high);
此接口是成员Java Collections Framework 。
Map
, TreeMap
, SortedSet
, Comparator
, Comparable
, Collection
, ClassCastException
Modifier and Type | Method and Description |
---|---|
Comparator<? super K> |
comparator()
返回用于订购此地图中的键的比较器,或 null 如果此地图使用其键的natural ordering 。
|
Set<Map.Entry<K,V>> |
entrySet()
返回此地图中包含的映射的 Set 视图。
|
K |
firstKey()
返回此地图中当前的第一个(最低)键。
|
SortedMap<K,V> |
headMap(K toKey)
返回该地图的部分密钥严格小于
toKey 。
|
Set<K> |
keySet()
返回此地图中包含的键的 Set 视图。
|
K |
lastKey()
返回当前在此地图中的最后(最高)键。
|
SortedMap<K,V> |
subMap(K fromKey, K toKey)
返回此地图部分的视图,其关键字范围为
fromKey (含),不
toKey toKey。
|
SortedMap<K,V> |
tailMap(K fromKey)
返回此地图部分的视图,其键大于或等于
fromKey 。
|
Collection<V> |
values()
返回此地图中包含的值的 Collection 视图。
|
clear, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, equals, forEach, get, getOrDefault, hashCode, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size
Comparator<? super K> comparator()
null
如果此地图使用其键的natural ordering 。
null
如果该地图使用其键的自然排序
SortedMap<K,V> subMap(K fromKey, K toKey)
fromKey
(含),不toKey
toKey。
(如果fromKey
和toKey
相等,则返回的地图为空。)返回的地图由该地图支持,所以返回的地图中的更改将反映在该地图中,反之亦然。
返回的地图支持该地图支持的所有可选地图操作。
返回的地图将扔一个IllegalArgumentException
尝试在其范围之外插入一个键。
fromKey
- 返回地图中的键的低端点(含)
toKey
- 返回地图中的键的高端点(独占)
fromKey
(含),至
toKey
,独占
ClassCastException
- 如果fromKey
和toKey
无法使用此映射的比较器彼此进行比较(或者,如果映射没有比较器,则使用自然排序)。
如果fromKey
或toKey
无法与当前在地图中的键进行比较,则实施可能但不是必须抛出此异常。
NullPointerException
- 如果
fromKey
或
toKey
为空,并且该地图不允许空键
IllegalArgumentException
- 如果fromKey
大于toKey
;
或者如果该地图本身具有限制范围,并且fromKey
或toKey
位于范围的范围之外
SortedMap<K,V> headMap(K toKey)
toKey
。
返回的地图由此地图支持,因此返回的地图中的更改将反映在该地图中,反之亦然。
返回的地图支持该地图支持的所有可选地图操作。
返回的地图会抛出一个IllegalArgumentException
,试图在其范围之外插入一个键。
toKey
- 返回地图中的键的高端点(独占)
toKey
ClassCastException
- 如果toKey
与此映射的toKey
器不兼容(或者,如果地图没有比较器,如果toKey
不实现Comparable
)。
如果toKey
无法与当前在地图中的键进行比较,则实施可能但不是必须抛出此异常。
NullPointerException
- 如果
toKey
为空,并且此映射不允许空键
IllegalArgumentException
- 如果这个地图本身有一个有限的范围,而
toKey
位于范围的范围之外
SortedMap<K,V> tailMap(K fromKey)
fromKey
。
返回的地图由此地图支持,因此返回的地图中的更改将反映在该地图中,反之亦然。
返回的地图支持该地图支持的所有可选地图操作。
返回的地图将抛出一个IllegalArgumentException
,试图在其范围之外插入一个键。
fromKey
- 返回地图中的键的低端点(含)
fromKey
ClassCastException
- 如果fromKey
与此映射的fromKey
器不兼容(或者如果映射没有比较器,如果fromKey
不实现Comparable
)。
如果fromKey
无法与当前在地图中的键进行比较,则实施可能但不是必须抛出此异常。
NullPointerException
- 如果
fromKey
为空,并且此映射不允许空键
IllegalArgumentException
- 如果这个地图本身有一个有限的范围,而
fromKey
位于范围的范围之外
K firstKey()
NoSuchElementException
- 如果这张地图是空的
K lastKey()
NoSuchElementException
- 如果
NoSuchElementException
空
Set<K> keySet()
Set
视图。
该集合的迭代器按升序返回密钥。
该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。
如果在集合中的迭代正在进行中修改映射(除了通过迭代器自己的remove
操作),迭代的结果是未定义的。
该组支持元件移除,即从映射中相应的映射,经由Iterator.remove
, Set.remove
, removeAll
, retainAll
和clear
操作。
它不支持add
或addAll
操作。
Collection<V> values()
Collection
视图。
集合的迭代器按照相应键的升序返回值。
集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。
如果在集合中的迭代正在进行时修改映射(除了通过迭代器自己的remove
操作),迭代的结果是未定义的。
该collection支持元素移除,即从映射中相应的映射,经由Iterator.remove
, Collection.remove
, removeAll
, retainAll
和clear
操作。
它不支持add
或addAll
操作。