-
- 参数类型
-
K
- 此映射维护的密钥类型 -
V
- 映射值的类型
- All Superinterfaces:
-
Map<K,V>
- All Known Subinterfaces:
-
ConcurrentNavigableMap<K,V>
,NavigableMap<K,V>
- 所有已知实现类:
-
ConcurrentSkipListMap
,TreeMap
public interface SortedMap<K,V>extends Map<K,V>
Map
进一步提供其密钥的总排序 。 该地图是根据有序natural ordering其密钥,或通过Comparator
通常在有序映射创建时提供。 遍历有序映射的集合视图(由返回时,这个顺序反映entrySet
,keySet
和values
方法)。 提供了几个额外的操作以利用订购。 (此界面是SortedSet
的地图模拟。)插入到有序映射中的所有键必须实现
Comparable
接口(或由指定的比较器接受)。 此外,所有此类密钥必须是可互相比较的 :k1.compareTo(k2)
(或comparator.compare(k1, k2)
)不得为有序映射中的任何键k1
和k2
抛出ClassCastException
。 尝试违反此限制将导致违规方法或构造函数调用抛出ClassCastException
。请注意,如果有序映射要正确实现
Map
接口,则由有序映射维护的排序(无论是否提供显式比较器)必须与equals一致 。 (有关与equals一致的精确定义,请参阅Comparable
接口或Comparator
接口。)这是因为Map
接口是根据equals
操作定义的,但是有序映射使用其compareTo
(或compare
)方法执行所有键比较因此,从排序地图的角度来看,这种方法被视为相等的两个键是相等的。 树映射的行为是明确的,即使它的排序和equals不一致; 它只是没有遵守Map
接口的一般合同。所有通用的有序映射实现类都应该提供四个“标准”构造函数。 虽然接口无法指定所需的构造函数,但无法强制执行此建议。 所有有序映射实现的预期“标准”构造函数是:
- 一个void(无参数)构造函数,它根据键的自然顺序创建一个空的有序映射。
- 具有
Comparator
类型的单个参数的构造函数,它创建根据指定的比较器排序的空的有序映射。 - 一个构造函数,其单个参数类型为
Map
,它创建一个具有与其参数相同的键 - 值映射的新映射,并根据键的自然顺序进行排序。 - 一个构造函数,其单个参数类型为
SortedMap
,它创建一个新的有序映射,其具有相同的键 - 值映射和与输入有序映射相同的顺序。
注意 :有几种方法返回带有受限键范围的子图。 这样的范围是半开放的 ,即它们包括它们的低端点但不包括它们的高端点(如果适用)。 如果您需要一个封闭范围 (包括两个端点),并且密钥类型允许计算给定密钥的后继,则仅请求从
lowEndpoint
到successor(highEndpoint)
的子范围。 例如,假设m
是一个键,其键是字符串。 以下习惯用法获取包含m
中所有键值映射的m
其键在low
和high
之间,包括:SortedMap<String, V> sub = m.subMap(low, high+"\0");
可以使用类似的技术来生成开放范围 (其中既不包含端点)。 下面的习惯用法获取一个视图,其中包含m
中的所有键值映射,其键位于low
和high
之间,不包括:SortedMap<String, V> sub = m.subMap(low+"\0", high);
此接口是Java Collections Framework的成员。
- 从以下版本开始:
- 1.2
- 另请参见:
-
Map
,TreeMap
,SortedSet
,Comparator
,Comparable
,Collection
,ClassCastException
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 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
视图。-
声明方法的接口 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()
返回用于为了在这个映射中的键,或比较null
如果此映射使用natural ordering的钥匙。- 结果
- 用于在此映射中对键进行排序的比较器,如果此映射使用其键的自然顺序,
null
-
subMap
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
为null且此映射不允许null键 -
IllegalArgumentException
- 如果fromKey
大于toKey
; 或者如果此地图本身具有受限范围,则fromKey
或toKey
位于范围的范围之外
-
headMap
SortedMap<K,V> headMap(K toKey)
返回此映射部分的视图,其键严格小于toKey
。 返回的地图由此地图支持,因此返回的地图中的更改将反映在此地图中,反之亦然。 返回的地图支持此地图支持的所有可选地图操作。返回的地图将尝试在其范围之外插入密钥时抛出
IllegalArgumentException
。- 参数
-
toKey
- 返回映射中键的高端点(独占) - 结果
- 此地图部分的视图,其键严格小于
toKey
- 异常
-
ClassCastException
- 如果toKey
与此映射的比较器不兼容(或者,如果映射没有比较器,则toKey
未实现Comparable
)。 如果toKey
无法与地图中当前的键进行比较,则实现可能(但不是必须)抛出此异常。 -
NullPointerException
- 如果toKey
为null且此映射不允许空键 -
IllegalArgumentException
- 如果此地图本身具有受限范围,并且toKey
位于范围的范围之外
-
tailMap
SortedMap<K,V> tailMap(K fromKey)
返回此映射的部分视图,其键大于或等于fromKey
。 返回的地图由此地图支持,因此返回的地图中的更改将反映在此地图中,反之亦然。 返回的地图支持此地图支持的所有可选地图操作。返回的地图将尝试在其范围之外插入密钥时抛出
IllegalArgumentException
。- 参数
-
fromKey
- 返回映射中键的低端点(包括) - 结果
- 此映射的部分视图,其键大于或等于
fromKey
- 异常
-
ClassCastException
- 如果fromKey
与此映射的比较器不兼容(或者,如果映射没有比较器,则fromKey
未实现Comparable
)。 如果fromKey
无法与地图中当前的键进行比较,则实现可能(但不是必须)抛出此异常。 -
NullPointerException
- 如果fromKey
为空且此映射不允许空键 -
IllegalArgumentException
- 如果此地图本身具有受限范围,并且fromKey
位于范围的范围之外
-
firstKey
K firstKey()
返回此映射中当前的第一个(最低)键。- 结果
- 当前在此地图中的第一个(最低)键
- 异常
-
NoSuchElementException
- 如果此地图为空
-
lastKey
K lastKey()
返回此映射中当前的最后一个(最高)键。- 结果
- 当前在此地图中的最后一个(最高)键
- 异常
-
NoSuchElementException
- 如果此地图为空
-
keySet
Set<K> keySet()
返回此映射中包含的键的Set
视图。 set的迭代器按升序返回键。 该集由地图支持,因此对地图的更改将反映在集中,反之亦然。 如果在对集合进行迭代时修改了映射(除了通过迭代器自己的remove
操作),迭代的结果是未定义的。 该组支持元件移除,即从映射中相应的映射,经由Iterator.remove
,Set.remove
,removeAll
,retainAll
,和clear
操作。 它不支持add
或addAll
操作。
-
values
Collection<V> values()
返回此映射中包含的值的Collection
视图。 集合的迭代器以相应键的升序返回值。 该集合由地图支持,因此对地图的更改将反映在集合中,反之亦然。 如果在对集合进行迭代时修改了映射(除了通过迭代器自己的remove
操作),迭代的结果是未定义的。 该collection支持元素移除,即从映射中相应的映射,经由Iterator.remove
,Collection.remove
,removeAll
,retainAll
和clear
操作。 它不支持add
或addAll
操作。
-
-