阅读(719) (6)

鸿蒙OS TreeMap

2022-06-16 16:30:42 更新

TreeMap

java.lang.Object

|---java.util.AbstractMap<K,V&

|---|---java.util.TreeMap<K,V&

public class TreeMap<K,V>
extends AbstractMap<K,V>
implements NavigableMap<K,V>, Cloneable, Serializable

基于红黑树的 NavigableMap 实现。 地图根据其键的 Comparable 排序,或者根据地图创建时提供的 Comparator 排序,具体取决于使用的构造函数。

此实现为 containsKey、get、put 和 remove 操作提供有保证的 log(n) 时间成本。 算法是对 Cormen、Leiserson 和 Rivest 的算法简介中的那些算法的改编。

请注意,树形映射维护的顺序,就像任何排序映射一样,以及是否提供显式比较器,如果此排序映射要正确实现 Map 接口,则必须与 equals 保持一致。 (参见 Comparable 或 Comparator 以了解与 equals 一致的精确定义。)这是因为 Map 接口是根据 equals 操作定义的,但排序后的映射使用其 compareTo(或比较)方法执行所有键比较,所以两个 从排序映射的角度来看,此方法认为相等的键是相等的。 已排序映射的行为是明确定义的,即使它的排序与 equals 不一致; 它只是不遵守 Map 接口的一般合同。

请注意,此实现不同步。 如果多个线程同时访问一个映射,并且至少有一个线程在结构上修改了映射,则必须在外部进行同步。 (结构修改是添加或删除一个或多个映射的任何操作;仅更改与现有键关联的值不是结构修改。)这通常通过同步一些自然封装映射的对象来完成。 如果不存在这样的对象,则应使用 Collections#synchronizedSortedMap 方法“包装” map。 这最好在创建时完成,以防止对地图的意外不同步访问:

   SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));

由此类的所有“集合视图方法”返回的集合的迭代器方法返回的迭代器是快速失败的:如果在创建迭代器后的任何时间对映射进行结构修改,除了通过迭代器自己的删除之外的任何方式 方法,迭代器将抛出 ConcurrentModificationException。 因此,面对并发修改,迭代器快速而干净地失败,而不是在未来不确定的时间冒任意的、非确定性的行为。

请注意,不能保证迭代器的快速失败行为,因为一般来说,在存在不同步的并发修改的情况下,不可能做出任何硬保证。 快速失败的迭代器会尽最大努力抛出 ConcurrentModificationException。 因此,编写一个依赖于这个异常的正确性的程序是错误的:迭代器的快速失败行为应该只用于检测错误。

此类中的方法及其视图返回的所有 Map.Entry 对都表示映射在生成时的快照。 它们不支持 Entry.setValue 方法。 (但请注意,可以使用 put 更改关联映射中的映射。)

此类是 Java 集合框架的成员。

嵌套类摘要

从类 java.util.AbstractMap 继承的嵌套类/接口
AbstractMap.SimpleEntryK,V, AbstractMap.SimpleImmutableEntryK,V
从接口 java.util.Map 继承的嵌套类/接口
Map.EntryK,V

构造函数摘要

构造函数 描述
TreeMap() 使用其键的自然顺序构造一个新的空树映射。
TreeMap(Comparator<? super K> comparator) 构造一个新的空树映射,根据给定的比较器排序。
TreeMap(Map<? extends K,? extends V> m) 构造一个包含与给定映射相同映射的新树映射,按照其键的自然顺序排序。
TreeMap(SortedMap<K,? extends V> m) 构造一个新的树形图,其中包含与指定的排序图相同的映射并使用相同的顺序。

方法总结

修饰符和类型 方法 描述
Map.EntryK,V ceilingEntry(K key) 返回与大于或等于给定键的最小键关联的键值映射,如果没有这样的键,则返回 null。
K ceilingKey(K key) 返回大于或等于给定键的最小键,如果没有这样的键,则返回 null。
void clear() 从此 map 中删除所有映射。
Object clone() 返回此 TreeMap 实例的浅表副本。
Comparator<? super K> comparator() 返回用于对该映射中的键进行排序的比较器,如果此映射使用其键的 Comparable,则返回 null。
boolean containsKey(Object key) 如果此映射包含指定键的映射,则返回 true。
boolean containsValue(Object value) 如果此映射将一个或多个键映射到指定值,则返回 true。
NavigableSetK descendingKeySet() 返回此映射中包含的键的逆序 NavigableSet 视图。
NavigableMapK,V descendingMap() 返回此映射中包含的映射的逆序视图。
SetMap.EntryK,V entrySet() 返回此映射中包含的映射的 Set 视图。
Map.EntryK,V firstEntry() 返回与此映射中的最小键关联的键值映射,如果映射为空,则返回 null。
K firstKey() 返回此映射中当前的第一个(最低)键。
Map.EntryK,V floorEntry(K key) 返回与小于或等于给定键的最大键关联的键值映射,如果没有这样的键,则返回 null。
K floorKey(K key) 返回小于或等于给定键的最大键,如果没有这样的键,则返回 null。
void forEach(BiConsumer<? super K,? super V> action) 对该映射中的每个条目执行给定的操作,直到处理完所有条目或该操作引发异常。
V get(Object key) 返回指定键映射到的值,如果此映射不包含该键的映射,则返回 null。
SortedMapK,V headMap(K toKey) 返回此映射部分的视图,其键严格小于 toKey。
NavigableMapK,V headMap(K toKey, boolean inclusive) 返回此映射部分的视图,其键小于(或等于,如果 inclusive 为真)toKey。
Map.EntryK,V higherEntry(K key) 返回与严格大于给定键的最小键关联的键值映射,如果没有这样的键,则返回 null。
K higherKey(K key) 返回严格大于给定键的最小键,如果没有这样的键,则返回 null。
SetK keySet() 返回此映射中包含的键的 Set 视图。
Map.EntryK,V lastEntry() 返回与此映射中最大键关联的键值映射,如果映射为空,则返回 null。
K lastKey() 返回此映射中当前的最后一个(最高)键。
Map.EntryK,V lowerEntry(K key) 返回与严格小于给定键的最大键关联的键值映射,如果没有这样的键,则返回 null。
K lowerKey(K key) 返回严格小于给定键的最大键,如果没有这样的键,则返回 null。
NavigableSetK navigableKeySet() 返回此地图中包含的键的 NavigableSet 视图。
Map.EntryK,V pollFirstEntry() 移除并返回与此映射中最小键关联的键值映射,如果映射为空,则返回 null。
Map.EntryK,V pollLastEntry() 删除并返回与此映射中最大键关联的键值映射,如果映射为空,则返回 null。
V put(K key, V value) 将指定的值与此映射中的指定键相关联。
void putAll(Map<? extends K,? extends V> map) 将所有映射从指定映射复制到此映射。
V remove(Object key) 如果存在,则从此 TreeMap 中删除此键的映射。
V replace(K key, V value) 仅当当前映射到某个值时才替换指定键的条目。
boolean replace(K key, V oldValue, V newValue) 仅当当前映射到指定值时才替换指定键的条目。
void replaceAll(BiFunction<? super K,? super V,? extends V> function) 将每个条目的值替换为对该条目调用给定函数的结果,直到所有条目都已处理或该函数引发异常。
int size() 返回此映射中键值映射的数量。
NavigableMapK,V subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) 返回此映射部分的视图,其键范围从 fromKey 到 toKey。
SortedMapK,V subMap(K fromKey, K toKey) 返回此映射部分的视图,其键范围从 fromKey(包括)到 toKey(不包括)。
SortedMapK,V tailMap(K fromKey) 返回此地图部分的视图,其键大于或等于 fromKey。
NavigableMapK,V tailMap(K fromKey, boolean inclusive) 返回此映射部分的视图,其键大于(或等于,如果 inclusive 为 true)fromKey。
CollectionV values() 返回此映射中包含的值的集合视图。
从类 java.util.AbstractMap 继承的方法
equals, hashCode, isEmpty, toString
从接口 java.util.Map 继承的方法
compute, computeIfAbsent, computeIfPresent, equals, getOrDefault, hashCode, isEmpty, merge, putIfAbsent, remove
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait

构造函数详细信息

TreeMap

public TreeMap()

使用其键的自然顺序构造一个新的空树映射。 插入映射的所有键都必须实现 Comparable 接口。 此外,所有此类键必须相互比较:k1.compareTo(k2) 不得为映射中的任何键 k1 和 k2 抛出 ClassCastException。 如果用户尝试将违反此约束的键放入映射中(例如,用户尝试将字符串键放入键为整数的映射中),则 put(Object key, Object value) 调用将抛出 ClassCastException .

TreeMap

public TreeMap(Comparator<? super K> comparator)

构造一个新的空树映射,根据给定的比较器排序。 插入到映射中的所有键必须通过给定的比较器相互比较:comparator.compare(k1, k2) 不能为映射中的任何键 k1 和 k2 抛出 ClassCastException。 如果用户试图将违反此约束的键放入映射中,则 put(Object key, Object value) 调用将抛出 ClassCastException。

参数:

参数名称 参数描述
comparator 将用于订购此地图的比较器。 如果为 null,则将使用键的 Comparable。

TreeMap

public TreeMap(Map<? extends K,? extends V> m)

构造一个包含与给定映射相同映射的新树映射,按照其键的自然顺序排序。 插入新映射的所有键都必须实现 Comparable 接口。 此外,所有此类键必须相互比较:k1.compareTo(k2) 不得为映射中的任何键 k1 和 k2 抛出 ClassCastException。 此方法在 n*log(n) 时间内运行。

参数:

参数名称 参数描述
m 其映射将放置在此 map 中的 map

Throws:

Throw名称 Throw描述
ClassCastException 如果 m 中的键不可比较,或者不可相互比较
NullPointerException 如果指定的 map 为空

TreeMap

public TreeMap(SortedMap<K,? extends V> m)

构造一个新的树形图,其中包含与指定的排序图相同的映射并使用相同的顺序。 此方法以线性时间运行。

参数:

参数名称 参数描述
m 已排序的映射,其映射将放置在此映射中,并且其比较器将用于对此映射进行排序

Throws:

Throw名称 Throw描述
NullPointerException 如果指定的 map 为空

方法详情

size

public int size()

返回此映射中键值映射的数量。

指定者:

接口 MapK,V 中的大小

覆盖:

AbstractMapK,V 类中的大小

返回:

此映射中的键值映射的数量

containsKey

public boolean containsKey(Object key)

如果此映射包含指定键的映射,则返回 true。

指定者:

containsKey 在接口 MapK,V

覆盖:

类 AbstractMapK,V 中的 containsKey

参数:

参数名称 参数描述
key 要测试此 map 中是否存在的键

返回:

如果此映射包含指定键的映射,则为 true

Throws:

Throw名称 Throw描述
ClassCastException 如果指定的键无法与 map 中当前的键进行比较
NullPointerException 如果指定的键为空并且此映射使用自然排序,或者它的比较器不允许空键

containsValue

public boolean containsValue(Object value)

如果此映射将一个或多个键映射到指定值,则返回 true。 更正式地说,当且仅当此映射包含至少一个到值 v 的映射时才返回 true,使得 (value==null ? v==null : value.equals(v))。 对于大多数实现,此操作可能需要 map 大小的线性时间。

指定者:

接口 MapK,V 中的 containsValue

覆盖:

类 AbstractMapK,V 中的 containsValue

参数:

参数名称 参数描述
value 要测试其在此映射中的存在的值

返回:

如果存在到值的映射,则为 true; 否则为 false

get

public V get(Object key)

返回指定键映射到的值,如果此映射不包含该键的映射,则返回 null。

更正式地说,如果此映射包含从键 k 到值 v 的映射,使得键根据映射的顺序比较等于 k,则此方法返回 v; 否则返回null。 (最多可以有一个这样的映射。)

返回值为 null 并不一定表示该映射不包含该键的映射; 映射也可能将键显式映射为空。 containsKey 操作可用于区分这两种情况。

指定者:

进入接口 MapK,V

覆盖:

进入类 AbstractMapK,V

参数:

参数名称 参数描述
key 要返回其关联值的键

返回:

指定键映射到的值,如果此映射不包含该键的映射,则为 null

Throws:

Throw名称 Throw描述
ClassCastException 如果指定的键无法与 map 中当前的键进行比较
NullPointerException 如果指定的键为空并且此映射使用自然排序,或者它的比较器不允许空键

comparator

public Comparator<? super K> comparator()

从接口复制的描述:SortedMap

返回用于对该映射中的键进行排序的比较器,如果此映射使用其键的 Comparable,则返回 null。

指定者:

接口 SortedMapK,V 中的比较器

返回:

用于对该映射中的键进行排序的比较器,如果此映射使用其键的自然排序,则为 null

firstKey

public K firstKey()

从接口复制的描述:SortedMap

返回此映射中当前的第一个(最低)键。

指定者:

接口 SortedMapK,V 中的 firstKey

返回:

当前此 map 中的第一个(最低)键

Throws:

Throw名称 Throw描述
NoSuchElementException 如果这个 map 是空的

lastKey

public K lastKey()

从接口复制的描述:SortedMap

返回此映射中当前的最后一个(最高)键。

指定者:

接口 SortedMapK,V 中的 lastKey

返回:

当前在此 map 中的最后一个(最高)键

Throws:

Throw名称 Throw描述
NoSuchElementException 如果这个 map 是空的

putAll

public void putAll(Map<? extends K,? extends V> map)

将所有映射从指定映射复制到此映射。 这些映射替换此映射对当前指定映射中的任何键的任何映射。

指定者:

putAll在接口MapK,V中

覆盖:

putAll 在类 AbstractMapK,V

参数:

参数名称 参数描述
map 要存储在此 map 中的映射

Throws:

Throw名称 Throw描述
ClassCastException 如果指定映射中的键或值的类阻止它存储在此映射中
NullPointerException 如果指定的映射为空或指定的映射包含空键并且此映射不允许空键

put

public V put(K key, V value)

将指定的值与此映射中的指定键相关联。 如果映射先前包含键的映射,则替换旧值。

指定者:

放入接口 MapK,V

覆盖:

放入类 AbstractMapK,V

参数:

参数名称 参数描述
key 与指定值关联的键
value 与指定键关联的值

返回:

与 key 关联的前一个值,如果没有 key 映射,则返回 null。 (返回 null 还可以指示映射先前将 null 与 key 关联。)

Throws:

Throw名称 Throw描述
ClassCastException 如果指定的键无法与 map 中当前的键进行比较
NullPointerException 如果指定的键为空并且此映射使用自然排序,或者它的比较器不允许空键

remove

public V remove(Object key)

如果存在,则从此 TreeMap 中删除此键的映射。

指定者:

在接口 MapK,V 中删除

覆盖:

在类 AbstractMapK,V 中删除

参数:

参数名称 参数描述
key 应该删除映射的键

返回:

与 key 关联的前一个值,如果没有 key 映射,则返回 null。 (返回 null 还可以指示映射先前将 null 与 key 关联。)

Throws:

Throw名称 Throw描述
ClassCastException 如果指定的键无法与 map 中当前的键进行比较
NullPointerException 如果指定的键为空并且此映射使用自然排序,或者它的比较器不允许空键

clear

public void clear()

从此 map 中删除所有映射。 此调用返回后,map 将为空。

指定者:

在界面 MapK,V 中清除

覆盖:

在类 AbstractMapK,V 中清除

clone

public Object clone()

返回此 TreeMap 实例的浅表副本。 (键和值本身不会被克隆。)

覆盖:

在类 AbstractMapK,V 中克隆

返回:

这张 map 的浅拷贝

firstEntry

public Map.EntryK,V firstEntry()

从接口复制的描述:NavigableMap

返回与此映射中的最小键关联的键值映射,如果映射为空,则返回 null。

指定者:

接口 NavigableMapK,V 中的 firstEntry

返回:

具有最少键的条目,如果此映射为空,则为 null

lastEntry

public Map.EntryK,V lastEntry()

从接口复制的描述:NavigableMap

返回与此映射中最大键关联的键值映射,如果映射为空,则返回 null。

指定者:

接口 NavigableMapK,V 中的 lastEntry

返回:

具有最大键的条目,如果此映射为空,则返回 null

pollFirstEntry

public Map.EntryK,V pollFirstEntry()

从接口复制的描述:NavigableMap

移除并返回与此映射中最小键关联的键值映射,如果映射为空,则返回 null。

指定者:

接口 NavigableMapK,V 中的 pollFirstEntry

返回:

此映射的已删除第一个条目,如果此映射为空,则返回 null

pollLastEntry

public Map.EntryK,V pollLastEntry()

从接口复制的描述:NavigableMap

删除并返回与此映射中最大键关联的键值映射,如果映射为空,则返回 null。

指定者:

接口 NavigableMapK,V 中的 pollLastEntry

返回:

此映射的已删除最后一个条目,如果此映射为空,则返回 null

lowerEntry

public Map.EntryK,V lowerEntry(K key)

从接口复制的描述:NavigableMap

返回与严格小于给定键的最大键关联的键值映射,如果没有这样的键,则返回 null。

指定者:

接口 NavigableMapK,V 中的 lowerEntry

参数:

参数名称 参数描述
key

返回:

最大键小于键的条目,如果没有这样的键,则返回 null

Throws:

Throw名称 Throw描述
ClassCastException 如果指定的键无法与 map 中当前的键进行比较
NullPointerException 如果指定的键为空并且此映射使用自然排序,或者它的比较器不允许空键

lowerKey

public K lowerKey(K key)

从接口复制的描述:NavigableMap

返回严格小于给定键的最大键,如果没有这样的键,则返回 null。

指定者:

接口 NavigableMapK,V 中的 lowerKey

参数:

参数名称 参数描述
key

返回:

小于 key 的最大键,如果没有这样的键,则为 null

Throws:

Throw名称 Throw描述
ClassCastException 如果指定的键无法与 map 中当前的键进行比较
NullPointerException 如果指定的键为空并且此映射使用自然排序,或者它的比较器不允许空键

floorEntry

public Map.EntryK,V floorEntry(K key)

从接口复制的描述:NavigableMap

返回与小于或等于给定键的最大键关联的键值映射,如果没有这样的键,则返回 null。

指定者:

接口 NavigableMapK,V 中的 floorEntry

参数:

参数名称 参数描述
key

返回:

最大键小于或等于键的条目,如果没有这样的键,则返回 null

Throws:

Throw名称 Throw描述
ClassCastException 如果指定的键无法与 map 中当前的键进行比较
NullPointerException 如果指定的键为空并且此映射使用自然排序,或者它的比较器不允许空键

floorKey

public K floorKey(K key)

从接口复制的描述:NavigableMap

返回小于或等于给定键的最大键,如果没有这样的键,则返回 null。

指定者:

接口 NavigableMapK,V 中的 floorKey

参数:

参数名称 参数描述
key

返回:

小于或等于 key 的最大键,如果没有这样的键,则为 null

Throws:

Throw名称 Throw描述
ClassCastException 如果指定的键无法与 map 中当前的键进行比较
NullPointerException 如果指定的键为空并且此映射使用自然排序,或者它的比较器不允许空键

ceilingEntry

public Map.EntryK,V ceilingEntry(K key)

从接口复制的描述:NavigableMap

返回与大于或等于给定键的最小键关联的键值映射,如果没有这样的键,则返回 null。

指定者:

接口 NavigableMapK,V 中的 ceilingEntry

参数:

参数名称 参数描述
key

返回:

具有大于或等于 key 的最小键的条目,如果没有这样的键,则返回 null

Throws:

Throw名称 Throw描述
ClassCastException 如果指定的键无法与 map 中当前的键进行比较
NullPointerException 如果指定的键为空并且此映射使用自然排序,或者它的比较器不允许空键

ceilingKey

public K ceilingKey(K key)

从接口复制的描述:NavigableMap

返回大于或等于给定键的最小键,如果没有这样的键,则返回 null。

指定者:

接口 NavigableMapK,V 中的 ceilingKey

参数:

参数名称 参数描述
key

返回:

大于或等于 key 的最小键,如果没有这样的键,则返回 null

Throws:

Throw名称 Throw描述
ClassCastException 如果指定的键无法与 map 中当前的键进行比较
NullPointerException 如果指定的键为空并且此映射使用自然排序,或者它的比较器不允许空键

higherEntry

public Map.EntryK,V higherEntry(K key)

从接口复制的描述:NavigableMap

返回与严格大于给定键的最小键关联的键值映射,如果没有这样的键,则返回 null。

指定者:

接口 NavigableMapK,V 中的更高条目

参数:

参数名称 参数描述
key

返回:

最小键大于键的条目,如果没有这样的键,则返回 null

Throws:

Throw名称 Throw描述
ClassCastException 如果指定的键无法与 map 中当前的键进行比较
NullPointerException 如果指定的键为空并且此映射使用自然排序,或者它的比较器不允许空键

higherKey

public K higherKey(K key)

从接口复制的描述:NavigableMap

返回严格大于给定键的最小键,如果没有这样的键,则返回 null。

指定者:

接口 NavigableMapK,V 中的higherKey

参数:

参数名称 参数描述
key

返回:

大于 key 的最小键,如果没有这样的键,则返回 null

Throws:

Throw名称 Throw描述
ClassCastException 如果指定的键无法与 map 中当前的键进行比较
NullPointerException 如果指定的键为空并且此映射使用自然排序,或者它的比较器不允许空键

keySet

public SetK keySet()

返回此映射中包含的键的 Set 视图。

集合的迭代器按升序返回键。该集合的拆分器是后期绑定的、快速失败的,并且另外报告 Spliterator#SORTED 和 Spliterator#ORDERED 的遇到顺序是升序键顺序。如果树形图的比较器(请参阅比较器())为空,则拆分器的比较器(请参阅 Spliterator.getComparator())为空。否则,拆分器的比较器与树形图的比较器相同或施加相同的总排序。

集合由 map 支持,因此对 map 的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改了映射(通过迭代器自己的删除操作除外),则迭代的结果是不确定的。该集合支持元素移除,即通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作从映射中移除相应的映射。它不支持 add 或 addAll 操作。

指定者:

接口 MapK,V 中的 keySet

指定者:

接口 SortedMapK,V 中的 keySet

覆盖:

AbstractMapK,V 类中的 keySet

返回:

此 map 中包含的键的集合视图

navigableKeySet

public NavigableSetK navigableKeySet()

从接口复制的描述:NavigableMap

返回此 map 中包含的键的 NavigableSet 视图。 集合的迭代器按升序返回键。 集合由 map 支持,因此对 map 的更改会反映在集合中,反之亦然。 如果在对集合进行迭代时修改了映射(通过迭代器自己的删除操作除外),则迭代的结果是不确定的。 该集合支持元素移除,即通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作从映射中移除相应的映射。 它不支持 add 或 addAll 操作。

指定者:

接口 NavigableMapK,V 中的 navigableKeySet

返回:

此 map 中键的可导航集视图

descendingKeySet

public NavigableSetK descendingKeySet()

从接口复制的描述:NavigableMap

返回此映射中包含的键的逆序 NavigableSet 视图。 该集合的迭代器按降序返回键。 集合由 map 支持,因此对 map 的更改会反映在集合中,反之亦然。 如果在对集合进行迭代时修改了映射(通过迭代器自己的删除操作除外),则迭代的结果是不确定的。 该集合支持元素移除,即通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作从映射中移除相应的映射。 它不支持 add 或 addAll 操作。

指定者:

接口 NavigableMapK,V 中的 descendingKeySet

返回:

此 map 中键的反向可导航集视图

values

public CollectionV values()

返回此映射中包含的值的集合视图。

集合的迭代器按相应键的升序返回值。集合的拆分器是后期绑定的,快速失败的,并且另外报告 Spliterator#ORDERED 遇到的顺序是相应键的升序。

集合由 map 支持,因此对 map 的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改了映射(通过迭代器自己的删除操作除外),则迭代的结果是不确定的。该集合支持元素移除,即通过 Iterator.remove、Collection.remove、removeAll、retainAll 和 clear 操作从映射中移除相应的映射。它不支持 add 或 addAll 操作。

指定者:

接口 MapK,V 中的值

指定者:

接口 SortedMapK,V 中的值

覆盖:

AbstractMapK,V 类中的值

返回:

此 map 中包含的值的集合视图

entrySet

public SetMap.EntryK,V entrySet()

返回此映射中包含的映射的 Set 视图。

集合的迭代器以升序键顺序返回条目。集合的拆分器是后期绑定的、快速失败的,并且另外报告 Spliterator#SORTED 和 Spliterator#ORDERED 的遇到顺序是升序键顺序。

集合由 map 支持,因此对 map 的更改会反映在集合中,反之亦然。如果在对集合进行迭代时修改了映射(除了通过迭代器自己的删除操作,或通过迭代器返回的映射条目上的 setValue 操作),则迭代的结果是未定义的。该集合支持元素移除,即通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作从映射中移除相应的映射。它不支持 add 或 addAll 操作。

指定者:

接口 MapK,V 中的 entrySet

指定者:

接口 SortedMapK,V 中的 entrySet

指定者:

AbstractMapK,V 类中的 entrySet

返回:

此 map 中包含的映射的集合视图

descendingMap

public NavigableMapK,V descendingMap()

从接口复制的描述:NavigableMap

返回此映射中包含的映射的逆序视图。 下降映射由该映射支持,因此对映射的更改会反映在下降映射中,反之亦然。 如果在对任一映射的集合视图进行迭代时修改了任一映射(通过迭代器自己的删除操作除外),则迭代的结果是未定义的。

返回的映射具有等价于 Collections#reverseOrder(Comparator)(comparator()) 的排序。 表达式 m.descendingMap().descendingMap() 返回一个 m 的视图,基本上等同于 m。

指定者:

接口 NavigableMapK,V 中的 descendingMap

返回:

此 map 的逆序视图

subMap

public NavigableMapK,V subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)

从接口复制的描述:NavigableMap

返回此映射部分的视图,其键范围从 fromKey 到 toKey。 如果 fromKey 和 toKey 相等,则返回的映射为空,除非 fromInclusive 和 toInclusive 都为 true。 返回的 map 由该 map 支持,因此返回 map 中的更改会反映在该 map 中,反之亦然。 返回的 map 支持该 map 支持的所有可选 map 操作。

返回的映射将在尝试插入超出其范围的键或构造其端点位于其范围之外的子映射时抛出 IllegalArgumentException。

指定者:

接口 NavigableMapK,V 中的 subMap

参数:

参数名称 参数描述
fromKey 返回映射中键的低端点
fromInclusive 如果要在返回的视图中包含低端点,则为 true
toKey 返回映射中键的高端点
toInclusive 如果要在返回的视图中包含高端端点,则为 true

返回:

此 map 部分的视图,其键范围从 fromKey 到 toKey

Throws:

Throw名称 Throw描述
ClassCastException 如果 fromKey 和 toKey 无法使用此映射的比较器相互比较(或者,如果映射没有比较器,则使用自然排序)。 如果无法将 fromKey 或 toKey 与映射中当前的键进行比较,则实现可以但不是必须抛出此异常。
NullPointerException 如果 fromKey 或 toKey 为 null 并且此映射使用自然排序,或者其比较器不允许 null 键
IllegalArgumentException 如果 fromKey 大于 toKey; 或者如果此地图本身具有限制范围,并且 fromKey 或 toKey 位于范围的范围之外

headMap

public NavigableMapK,V headMap(K toKey, boolean inclusive)

从接口复制的描述:NavigableMap

返回此映射部分的视图,其键小于(或等于,如果 inclusive 为 true)toKey。 返回的 map 由该 map 支持,因此返回 map 中的更改会反映在该 map 中,反之亦然。 返回的 map 支持该 map 支持的所有可选 map 操作。

返回的映射将在尝试在其范围之外插入键时抛出 IllegalArgumentException。

指定者:

接口 NavigableMapK,V 中的 headMap

参数:

参数名称 参数描述
toKey 返回映射中键的高端点
inclusive 如果要在返回的视图中包含高端端点,则为 true

返回:

此 map 部分的视图,其键小于(或等于,如果 inclusive 为 true)toKey

Throws:

Throw名称 Throw描述
ClassCastException 如果 toKey 与此 map 的比较器不兼容(或者,如果 map 没有比较器,如果 toKey 没有实现 Comparable)。 如果 toKey 无法与地图中当前的键进行比较,则实现可以但不是必须抛出此异常。
NullPointerException 如果 toKey 为空且此映射使用自然排序,或者其比较器不允许空键
IllegalArgumentException 如果此 map 本身具有受限范围,并且 toKey 位于范围之外

tailMap

public NavigableMapK,V tailMap(K fromKey, boolean inclusive)

从接口复制的描述:NavigableMap

返回此映射部分的视图,其键大于(或等于,如果 inclusive 为 true)fromKey。 返回的 map 由该 map 支持,因此返回 map 中的更改会反映在该 map 中,反之亦然。 返回的 map 支持该 map 支持的所有可选 map 操作。

返回的映射将在尝试在其范围之外插入键时抛出 IllegalArgumentException。

指定者:

接口 NavigableMapK,V 中的 tailMap

参数:

参数名称 参数描述
fromKey 返回映射中键的低端点
inclusive 如果要在返回的视图中包含低端点,则为 true

返回:

此 map 部分的视图,其键大于(或等于,如果 inclusive 为 true)fromKey

Throws:

Throw名称 Throw描述
ClassCastException 如果 fromKey 与此映射的比较器不兼容(或者,如果映射没有比较器,如果 fromKey 未实现 Comparable)。 如果无法将 fromKey 与当前映射中的键进行比较,则实现可以但不是必须抛出此异常。
NullPointerException 如果 fromKey 为 null 并且此映射使用自然排序,或者它的比较器不允许 null 键
IllegalArgumentException 如果此 map 本身具有限制范围,并且 fromKey 位于范围范围之外

subMap

public SortedMapK,V subMap(K fromKey, K toKey)

从接口复制的描述:NavigableMap

返回此映射部分的视图,其键范围从 fromKey(包括)到 toKey(不包括)。 (如果 fromKey 和 toKey 相等,则返回的映射为空。)返回的映射受此映射的支持,因此返回映射中的更改会反映在此映射中,反之亦然。 返回的地图支持该地图支持的所有可选地图操作。

返回的映射将在尝试在其范围之外插入键时抛出 IllegalArgumentException。

等价于 subMap(fromKey, true, toKey, false)。

指定者:

接口 NavigableMapK,V 中的 subMap

指定者:

接口 SortedMapK,V 中的 subMap

参数:

参数名称 参数描述
fromKey 返回映射中键的低端点(包括)
toKey 返回映射中键的高端(不包括)

返回:

此 map 部分的视图,其键范围从 fromKey(包括)到 toKey(不包括)

Throws:

Throw名称 Throw描述
ClassCastException 如果 fromKey 和 toKey 无法使用此映射的比较器相互比较(或者,如果映射没有比较器,则使用自然排序)。 如果无法将 fromKey 或 toKey 与映射中当前的键进行比较,则实现可以但不是必须抛出此异常。
NullPointerException 如果 fromKey 或 toKey 为 null 并且此映射使用自然排序,或者其比较器不允许 null 键
IllegalArgumentException 如果 fromKey 大于 toKey; 或者如果此 map 本身具有限制范围,并且 fromKey 或 toKey 位于范围的范围之外

headMap

public SortedMapK,V headMap(K toKey)

从接口复制的描述:NavigableMap

返回此映射部分的视图,其键严格小于 toKey。 返回的 map 由该 map 支持,因此返回 map 中的更改会反映在该 map 中,反之亦然。 返回的 map 支持该 map 支持的所有可选 map 操作。

返回的映射将在尝试在其范围之外插入键时抛出 IllegalArgumentException。

等效于 headMap(toKey, false)。

指定者:

接口 NavigableMapK,V 中的 headMap

指定者:

接口 SortedMapK,V 中的 headMap

参数:

参数名称 参数描述
toKey 返回映射中键的高端(不包括)

返回:

此 map 部分的视图,其键严格小于 toKey

Throws:

Throw名称 Throw描述
ClassCastException 如果 toKey 与此 map 的比较器不兼容(或者,如果 map 没有比较器,如果 toKey 没有实现 Comparable)。 如果 toKey 无法与 map 中当前的键进行比较,则实现可以但不是必须抛出此异常。
NullPointerException 如果 toKey 为空且此映射使用自然排序,或者其比较器不允许空键
IllegalArgumentException 如果此 map 本身具有受限范围,并且 toKey 位于范围之外

tailMap

public SortedMapK,V tailMap(K fromKey)

从接口复制的描述:NavigableMap

返回此 map 部分的视图,其键大于或等于 fromKey。 返回的 map 由此 map 支持,因此返回 map 中的更改会反映在此 map 中,反之亦然。 返回的 map 支持该 map 支持的所有可选 map 操作。

返回的映射将在尝试在其范围之外插入键时抛出 IllegalArgumentException。

等价于tailMap(fromKey, true)。

指定者:

接口 NavigableMapK,V 中的 tailMap

指定者:

接口 SortedMapK,V 中的 tailMap

参数:

参数名称 参数描述
fromKey 返回映射中键的低端点(包括)

返回:

此 map 部分的视图,其键大于或等于 fromKey

Throws:

Throw名称 Throw描述
ClassCastException 如果 fromKey 与此映射的比较器不兼容(或者,如果映射没有比较器,如果 fromKey 未实现 Comparable)。 如果无法将 fromKey 与当前映射中的键进行比较,则实现可以但不是必须抛出此异常。
NullPointerException 如果 fromKey 为 null 并且此映射使用自然排序,或者它的比较器不允许 null 键
IllegalArgumentException 如果此 map 本身具有限制范围,并且 fromKey 位于范围范围之外

replace

public boolean replace(K key, V oldValue, V newValue)

从接口复制的描述:map

仅当当前映射到指定值时才替换指定键的条目。

指定者:

在接口 MapK,V 中替换

参数:

参数名称 参数描述
key 与指定值关联的键
oldValue 预期与指定键关联的值
newValue 与指定键关联的值

返回:

如果值被替换,则为 true

replace

public V replace(K key, V value)

从接口复制的描述:map

仅当当前映射到某个值时才替换指定键的条目。

指定者:

在接口 MapK,V 中替换

参数:

参数名称 参数描述
key 与指定值关联的键
value 与指定键关联的值

返回:

与指定键关联的前一个值,如果键没有映射,则返回 null。 (如果实现支持 null 值,则返回 null 还可以指示映射先前将 null 与键关联。)

forEach

public void forEach(BiConsumer<? super K,? super V> action)

从接口复制的描述:map

对该映射中的每个条目执行给定的操作,直到处理完所有条目或该操作引发异常。 除非实现类另有规定,否则按照条目集迭代的顺序执行动作(如果指定了迭代顺序)。动作抛出的异常将转发给调用者。

指定者:

接口 MapK,V 中的 forEach

参数:

参数名称 参数描述
action 为每个条目执行的操作

replaceAll

public void replaceAll(BiFunction<? super K,? super V,? extends V> function)

从接口复制的描述:map

将每个条目的值替换为对该条目调用给定函数的结果,直到所有条目都已处理或该函数引发异常。 函数抛出的异常被转发给调用者。

指定者:

接口 MapK,V 中的 replaceAll

参数:

参数名称 参数描述
function 应用于每个条目的函数