java.lang.Objectjava.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<