java.lang.Object java.util.AbstractMap<K,V> java.util.concurrent.ConcurrentSkipListMap<K,V>
K
- 此映射维护的键类型
V
- 映射值的类型
public class ConcurrentSkipListMap<K,V>
可缩放的并发 ConcurrentNavigableMap
实现。映射可以根据键的自然顺序进行排序,也可以根据创建映射时所提供的 Comparator
进行排序,具体取决于使用的构造方法。
此类实现 SkipLists 的并发变体,为 containsKey、get、put、remove 操作及其变体提供预期平均 log(n) 时间开销。多个线程可以安全地并发执行插入、移除、更新和访问操作。迭代器是弱一致 的,返回的元素将反映迭代器创建时或创建后某一时刻的映射状态。它们不 抛出 ConcurrentModificationException
,可以并发处理其他操作。升序键排序视图及其迭代器比降序键排序视图及其迭代器更快。
此类及此类视图中的方法返回的所有 Map.Entry 对,表示他们产生时的映射关系快照。它们不 支持 Entry.setValue 方法。(注意,根据所需效果,可以使用 put、putIfAbsent 或 replace 更改关联映射中的映射关系。)
请注意,与在大多数 collection 中不同,这里的 size 方法不是 一个固定时间 (constant-time) 操作。因为这些映射的异步特性,确定元素的当前数目需要遍历元素。此外,批量操作 putAll、equals 和 clear 并不 保证能以原子方式 (atomically) 执行。例如,与 putAll 操作一起并发操作的迭代器只能查看某些附加元素。
此类及其视图和迭代器实现 Map
和 Iterator
接口的所有可选 方法。与大多数其他并发 collection 一样,此类不 允许使用 null 键或值,因为无法可靠地区分 null 返回值与不存在的元素值。
此类是 Java Collections Framework 的成员。
嵌套类摘要 |
---|
从类 java.util.AbstractMap 继承的嵌套类/接口 |
---|
AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V> |
从接口 java.util.Map 继承的嵌套类/接口 |
---|
Map.Entry<K,V> |
构造方法摘要 | |
---|---|
ConcurrentSkipListMap() 构造一个新的空映射,该映射按照键的自然顺序进行排序。 |
|
ConcurrentSkipListMap(Comparator<? super K> comparator) 构造一个新的空映射,该映射按照指定的比较器进行排序。 |
|
ConcurrentSkipListMap(Map<? extends K,? extends V> m) 构造一个新映射,该映射所包含的映射关系与给定映射包含的映射关系相同,并按照键的自然顺序进行排序。 |
|
ConcurrentSkipListMap(SortedMap<K,? extends V> m) 构造一个新映射,该映射所包含的映射关系与指定的有序映射包含的映射关系相同,使用的顺序也相同。 |
方法摘要 | |
---|---|
Map.Entry<K,V> |
ceilingEntry(K key) 返回与大于等于给定键的最小键关联的键-值映射关系;如果不存在这样的条目,则返回 null。 |
K |
ceilingKey(K key) 返回大于等于给定键的最小键;如果不存在这样的键,则返回 null 。 |
void |
clear() 从此映射中移除所有映射关系。 |
ConcurrentSkipListMap<K,V> |
clone() 返回此 ConcurrentSkipListMap 实例的浅表副本。 |
Comparator<? super K> |
comparator() 返回对此映射中的键进行排序的比较器;如果此映射使用键的自然顺序,则返回 null。 |
boolean |
containsKey(Object key) 如果此映射包含指定键的映射关系,则返回 true。 |
boolean |
containsValue(Object value) 如果此映射为指定值映射一个或多个键,则返回 true。 |
NavigableSet<K> |
descendingKeySet() 返回此映射中所包含键的逆序 NavigableSet 视图。 |
ConcurrentNavigableMap<K,V> |
descendingMap() 返回此映射中所包含映射关系的逆序视图。 |
Set<Map.Entry<K,V>> |
entrySet() 返回此映射中所包含的映射关系的 Set 视图。 |
boolean |
equals(Object o) 比较指定对象与此映射的相等性。 |
Map.Entry<K,V> |
firstEntry() 返回与此映射中的最小键关联的键-值映射关系;如果该映射为空,则返回 null。 |
K |
firstKey() 返回此映射中当前第一个(最低)键。 |
Map.Entry<K,V> |
floorEntry(K key) 返回与小于等于给定键的最大键关联的键-值映射关系;如果不存在这样的键,则返回 null。 |
K |
floorKey(K key) 返回小于等于给定键的最大键;如果不存在这样的键,则返回 null 。 |
V |
get(Object key) 返回指定键所映射到的值;如果此映射不包含该键的映射关系,则返回 null 。 |
ConcurrentNavigableMap<K,V> |
headMap(K toKey) 返回此映射的部分视图,其键值严格小于 toKey。 |
ConcurrentNavigableMap<K,V> |
headMap(K toKey, boolean inclusive) 返回此映射的部分视图,其键小于(或等于,如果 inclusive 为 true)toKey 。 |
Map.Entry<K,V> |
higherEntry(K key) 返回与严格大于给定键的最小键关联的键-值映射关系;如果不存在这样的键,则返回 null。 |
K |
higherKey(K key) 返回严格大于给定键的最小键;如果不存在这样的键,则返回 null 。 |
boolean |
isEmpty() 如果此映射未包含键-值映射关系,则返回 true。 |
NavigableSet<K> |
keySet() 返回此映射中所包含键的 NavigableSet 视图。 |
Map.Entry<K,V> |
lastEntry() 返回与此映射中的最大键关联的键-值映射关系;如果该映射为空,则返回 null。 |
K |
lastKey() 返回映射中当前最后一个(最高)键。 |
Map.Entry<K,V> |
lowerEntry(K key) 返回与严格小于给定键的最大键关联的键-值映射关系;如果不存在这样的键,则返回 null。 |
K |
lowerKey(K key) 返回严格小于给定键的最大键;如果不存在这样的键,则返回 null 。 |
NavigableSet<K> |
navigableKeySet() 返回此映射中所包含键的 NavigableSet 视图。 |
Map.Entry<K,V> |
pollFirstEntry() 移除并返回与此映射中的最小键关联的键-值映射关系;如果该映射为空,则返回 null。 |
Map.Entry<K,V> |
pollLastEntry() 移除并返回与此映射中的最大键关联的键-值映射关系;如果该映射为空,则返回 null。 |
V |
put(K key, V value) 将指定值与此映射中的指定键关联。 |
V |
putIfAbsent(K key, V value) 如果指定键已经不再与某个值相关联,则将它与给定值关联。 |
V |
remove(Object key) 从此映射中移除指定键的映射关系(如果存在)。 |
boolean |
remove(Object key, Object value) 只有目前将键的条目映射到给定值时,才移除该键的条目。 |
V |
replace(K key, V value) 只有目前将键的条目映射到某一值时,才替换该键的条目。 |
boolean |
replace(K key, V oldValue, V newValue) 只有目前将键的条目映射到给定值时,才替换该键的条目。 |
int |
size() 返回此映射中的键-值映射关系数。 |
ConcurrentNavigableMap<K,V> |
subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive) 返回此映射的部分视图,其键的范围从 fromKey 到 toKey 。 |
ConcurrentNavigableMap<K,V> |
subMap(K fromKey, K toKey) 返回此映射的部分视图,其键值的范围从 fromKey(包括)到 toKey(不包括)。 |
ConcurrentNavigableMap<K,V> |
tailMap(K fromKey) 返回此映射的部分视图,其键大于等于 fromKey。 |
ConcurrentNavigableMap<K,V> |
tailMap(K fromKey, boolean inclusive) 返回此映射的部分视图,其键大于(或等于,如果 inclusive 为 true)fromKey 。 |
Collection<V> |
values() 返回此映射中所包含值的 Collection 视图。 |
从类 java.util.AbstractMap 继承的方法 |
---|
hashCode, putAll, toString |
从类 java.lang.Object 继承的方法 |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
从接口 java.util.Map 继承的方法 |
---|
hashCode, putAll |
构造方法详细信息 |
---|
public ConcurrentSkipListMap()
public ConcurrentSkipListMap(Comparator<? super K> comparator)
comparator
- 用于对此映射进行排序的比较器。如果此参数为
null,则使用键的
自然顺序。
public ConcurrentSkipListMap(Map<? extends K,? extends V> m)
m
- 映射关系将被存放在此映射中的映射
ClassCastException
- 如果
m 中的键不是
Comparable
,或者无法相互比较
NullPointerException
- 如果指定的映射或者它的任何键或值为 null
public ConcurrentSkipListMap(SortedMap<K,? extends V> m)
m
- 映射关系将被存放在此映射中的有序映射,其比较器用于对此映射进行排序
NullPointerException
- 如果指定的有序映射或者它的任何键或值为 null
方法详细信息 |
---|
public ConcurrentSkipListMap<K,V> clone()
AbstractMap<K,V>
中的
clone
Cloneable
public boolean containsKey(Object key)
Map<K,V>
中的
containsKey
AbstractMap<K,V>
中的
containsKey
key
- 测试是否存在于此映射中的键
ClassCastException
- 如果指定键无法与映射中的当前键进行比较
NullPointerException
- 如果指定键为 null
public V get(Object key)
null
。
更确切地讲,如果此映射包含从键 k
到值 v
的映射关系,根据映射的顺序,key
与 k
比较起来相等,那么此方法返回 v
;否则返回 null
。(最多只能有一个这样的映射关系)。
key
- 要返回其关联值的键
null
ClassCastException
- 如果指定键无法与映射中的当前键进行比较
NullPointerException
- 如果指定键为 null
public V put(K key, V value)
key
- 与指定值关联的键
value
- 与指定键关联的值
ClassCastException
- 如果指定键无法与映射中的当前值进行比较
NullPointerException
- 如果指定键或值为 null
public V remove(Object key)
key
- 映射关系应该被移除的键
ClassCastException
- 如果指定键无法与映射中的当前值进行比较
NullPointerException
- 如果指定键为 null
public boolean containsValue(Object value)
Map<K,V>
中的
containsValue
AbstractMap<K,V>
中的
containsValue
value
- 测试是否存在于此映射中的值
NullPointerException
- 如果指定的值为 null
public int size()
请注意,与在大多数 collection 中不同,此方法在这不是 一个固定时间操作。因为这些映射的异步特性,确定元素的当前数目需要遍历元素以计算其数目。此外,在执行此方法期间可以更改大小,在这种情况下,返回的结果将不准确。因此,此方法在并发应用程序中通常不是很有用。
public boolean isEmpty()
Map<