|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.util
接口 SortedMap<K,V>
- 所有超级接口:
- Map<K,V>
- 所有已知实现类:
- TreeMap
-
public interface SortedMap<K,V>
- extends Map<K,V>
保证按照键的升序排列的映射,可以按照键的自然顺序(参见 Comparable 接口)进行排序,或者通过创建有序映射时提供的比较器进行排序。对有序映射的集合视图(由 entrySet、keySet 和 values 方法返回)进行迭代时,此顺序就会反映出来。要采用此排序,还需要提供一些其他操作(此接口是相似于 SortedSet 接口的映射)。
插入有序映射的所有键都必须实现 Comparable 接口(或者被指定的比较器所接受)。另外,所有这些键都必须是可互相比较的:k1.compareTo(k2)(或 comparator.compare(k1, k2))对有序映射中的任意两个元素 k1 和 k2 都不得抛出 ClassCastException。试图违反这些限制将导致违反方法或者构造方法的调用,从而抛出 ClassCastException。
注意,如果有序映射正确实现了 Map 接口,则有序映射所保持的顺序(无论是否明确提供了比较器)都必须保持相等一致性。(相等一致性 的精确定义请参阅 Comparable 接口或 Comparator 接口)。这也是因为 Map 接口是按照 equals 操作定义的,但有序映射使用它的 compareTo(或 compare)方法对所有键进行比较,因此从有序映射的观点来看,此方法认为相等的两个键就是相等的。即使顺序没有保持相等一致性,树映射的行为仍然是 定义良好的,只不过没有遵守 Map 接口的常规协定。
所有通用有序映射实现类都应该提供 4 个“标准”构造方法:1) void(不带参数)构造方法,创建空的有序映射,按照键的自然顺序 排序。2) 带有一个 Comparator 类型参数的构造方法,创建一个空的有序映射,根据指定的比较器排序。3) 带有一个 Map 类型参数的构造方法,创建一个键-值映射关系与参数相同的有序映射,按照键的自然顺序排序。4) 带有一个有序映射类型参数的构造方法,创建一个新的有序映射,键-值映射关系及排序方法与输入的有序映射相同。除了 JDK 实现(TreeMap 类)遵循此建议外,无法保证强制实施此建议(因为接口不能包含构造方法)。
此接口是 Java Collections Framework 的成员。
- 从以下版本开始:
- 1.2
- 另请参见:
-
Map
,TreeMap
,SortedSet
,Comparator
,Comparable
,Collection
,ClassCastException
嵌套类摘要 |
---|
从接口 java.util.Map 继承的嵌套类/接口 |
---|
Map.Entry<K,V> |
方法摘要 | |
---|---|
Comparator<? super K> |
comparator() 返回与此有序映射关联的比较器,如果使用键的自然顺序,则返回 null。 |
K |
firstKey() 返回有序映射中当前第一个(最小的)键。 |
SortedMap<K,V> |
headMap(K toKey) 返回此有序映射的部分视图,其键值严格小于 toKey。 |
K |
lastKey() 返回有序映射中当前最后一个(最大的)键。 |
SortedMap<K,V> |
subMap(K fromKey, K toKey) 返回此有序映射的部分视图,其键值从 fromKey(包括)到 toKey(不包括)。 |
SortedMap<K,V> |
tailMap(K fromKey) 返回有序映射的部分视图,其键大于或等于 fromKey。 |
从接口 java.util.Map 继承的方法 |
---|
clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, values |
方法详细信息 |
---|
comparator
Comparator<? super K> comparator()
- 返回与此有序映射关联的比较器,如果使用键的自然顺序,则返回 null。
-
-
- 返回:
- 与有序映射关联的比较器,如果使用元素的自然顺序,则返回 null。
subMap
SortedMap<K,V> subMap(K fromKey, K toKey)
-
返回此有序映射的部分视图,其键值从 fromKey(包括)到 toKey(不包括)。(如果 fromKey 和 toKey 相等,则返回空的有序映射)。返回的有序映射由此有序映射支持,因此返回有序映射中的更改将反映在此有序映射中,反之亦然。返回的 Map 支持此有序映射支持的所有可选映射操作。
如果用户试图插入超出指定范围的键,则此方法返回的映射将抛出 IllegalArgumentException。
注:此方法总是返回一个半开区间(包括低终结点而不包括高终结点)。如果需要一个闭区间(同时包括两个终结点),并且键类型允许计算给定键值的后继值,则只需要请求从 lowEndpoint 到 successor(highEndpoint) 的子区间。例如,假设 m 是一个用字符串作为键的映射。下面的语句将得到一个包含 m 中键在 low 和 high(包括)之间的所有键-值映射关系的视图:
Map sub = m.subMap(low, high+"\0");
可使用类似的技术生成开区间(两个终结点都不包括)。下面的语句将得到一个包含 m 中键在 low 和 high(不包括)之间的所有键-值映射关系的视图:Map sub = m.subMap(low+"\0", high);
-
-
- 参数:
-
fromKey
- subMap 的低终结点(包括)。 -
toKey
- subMap 的高终结点(不包括)。 - 返回:
- 有序映射中指定区间的视图。
- 抛出:
-
ClassCastException
- 如果不能使用映射的比较器(如果此映射没有比较器,则使用自然顺序)比较 fromKey 和 toKey。如果 fromKey 或 toKey 不能与映射中当前键比较,则实现可能抛出此异常,但不要求。 -
IllegalArgumentException
- 如果 fromKey 大于 toKey;或者映射本身是一个 subMap、headMap 或 tailMap,并且 fromKey 或 toKey 不在 subMap、headMap 或 tailMap 指定的范围之内。 -
NullPointerException
- 如果 fromKey 或 toKey 为 null,并且此有序映射不接受 null 键。
headMap
SortedMap<K,V> headMap(K toKey)
-
返回此有序映射的部分视图,其键值严格小于 toKey。返回的有序映射由此有序映射支持,因此返回有序映射中的更改将反映在此有序映射中,反之亦然。返回的映射支持此有序映射支持的所有可选映射操作。
如果用户试图插入超出指定范围的键,则此方法返回的映射将抛出 IllegalArgumentException。
注:此方法总是返回不包括(高)终结点的视图。如果需要包含此终结点的视图,而且键类型允许计算给定键值的后继值,则只需要请求以 successor(highEndpoint) 为界的 headMap。例如,假设 m 是一个用字符串作为键的映射。下面的语句将得到一个包含 m 中键值小于或等于 high 的所有键-值映射关系的视图:
Map head = m.headMap(high+"\0");
-
-
- 参数:
-
toKey
- subMap 的高终结点(不包括)。 - 返回:
- 此有序映射指定初始区间的视图。
- 抛出:
-
ClassCastException
- 如果 toKey 与此映射的比较器不兼容(如果此映射没有比较器,并且 toKey 没有实现 Comparable)。如果 fromKey 或 toKey 不能与映射中的当前键进行比较,则实现可能抛出此异常,但不要求。 -
IllegalArgumentException
- 如果此映射本身是一个 subMap、headMap 或 tailMap,并且 toKey 不在 subMap、headMap 或 tailMap 指定的范围之内。 -
NullPointerException
- 如果 toKey 为 null,并且此有序映射不接受 null 键。
tailMap
SortedMap<K,V> tailMap(K fromKey)
-
返回有序映射的部分视图,其键大于或等于 fromKey。返回的有序映射由此有序映射支持,因此返回有序映射中的更改将反映在此有序映射中,反之亦然。返回的映射支持此有序映射支持的所有可选映射操作。
如果用户试图插入超出指定范围的键,则此方法返回的映射将抛出 IllegalArgumentException。
注:此方法总是返回包括(低)终结点的视图。如果需要不含此终结点的视图,而且元素类型允许计算给定值的后继值,则只需要请求以 successor(lowEndpoint) 为界的 tailMap。例如,假设 m 是一个用字符串作为键的映射。下面的语句将得到一个包含 m 中键严格大于 low 的所有键-值映射关系的视图:
Map tail = m.tailMap(low+"\0");
-
-
- 参数:
-
fromKey
- tailMap 的低终结点(包括)。 - 返回:
- 此有序映射指定的最终范围的视图。
- 抛出:
-
ClassCastException
- 如果 fromKey 与此映射的比较器不兼容(如果此映射没有比较器,并且 fromKey 没有实现 Comparable)。如果 fromKey 不能和映射中的当前键比较,则实现可能抛出此异常,但不要求。 -
IllegalArgumentException
- 如果此映射本身是一个 subMap、headMap 或 tailMap,并且 fromKey 不在 subMap、headMap 或 tailMap 指定的范围之内。 -
NullPointerException
- 如果 fromKey 为 null,并且此有序映射不能接受 null 键。
firstKey
K firstKey()
- 返回有序映射中当前第一个(最小的)键。
-
-
- 返回:
- 有序映射中当前第一个(最小的)键。
- 抛出:
-
NoSuchElementException
- 如果是空映射。
lastKey
K lastKey()
- 返回有序映射中当前最后一个(最大的)键。
-
-
- 返回:
- 有序映射中当前最后一个(最大的)键。
- 抛出:
-
NoSuchElementException
- 如果是空映射。
所有类
|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |