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, sizeComparator<? 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操作。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.