目录

接口

interface ConcurrentMap<K, V> where K <: Equatable<K>

public interface ConcurrentMap<K, V> where K <: Equatable<K> {
    func get(key: K): Option<V>
    func contains(key: K): Bool
    mut func put(key: K, value: V): Option<V>
    mut func putIfAbsent(key: K, value: V): Option<V>
    mut func remove(key: K): Option<V>
    mut func remove(key: K, predicate: (V) -> Bool): Option<V>
    mut func replace(key: K, value: V): Option<V>
    mut func replace(key: K, eval: (V) -> V): Option<V>
    mut func replace(key: K, predicate: (V) -> Bool, eval: (V) -> V): Option<V>
}

功能:保证线程安全和操作原子性的 Map 接口定义。

ConcurrentMap 接口中声明了并发场景下线程安全的 Map 必须保证原子性的方法,我们希望定义的线程安全 Map 类都能实现 ConcurrentMap 接口。例如我们在该包中定义的 ConcurrentHashMap 就实现了 ConcurrentMap 接口,并提供了 ConcurrentMap 中所声明方法的保证原子性的实现。

ConcurrentMap 接口中声明了并发 Map 在并发场景下需要保证原子性的方法。

并发 Map 为“键”到“值”的映射,其中 K 为键的类型,V 为值的类型。

[h2]func contains(K)

func contains(key: K): Bool

功能:判断 Map 中是否包含指定键 key 的关联。

参数:

返回值:

[h2]func get(K)

func get(key: K): Option<V>

功能:返回 Map 中键 key 所关联的值。

参数:

返回值:

[h2]func put(K, V)

mut func put(key: K, value: V): Option<V>

功能:将指定的值 value 与此 Map 中指定的键 key 关联。如果 Map 中已经包含键 key 的关联,则旧值将被替换;如果 Map 中不包含键 key 的关联,则添加键 key 与值 value 的关联。

参数:

返回值:

[h2]func putIfAbsent(K, V)

mut func putIfAbsent(key: K, value: V): Option<V>

功能:当此 Map 中不存在键 key 时,在 Map 中添加指定的值 value 与指定的键 key 的关联。如果 Map 已经包含键 key,则不执行赋值操作。

参数:

返回值:

[h2]func remove(K)

mut func remove(key: K): Option<V>

功能:从此映射中删除指定键 key 的映射(如果存在)。

参数:

返回值:

[h2]func remove(K, (V) -> Bool)

mut func remove(key: K, predicate: (V) -> Bool): Option<V>

功能:如果 Map 中存在键 key 且 key 所关联的值 v 满足条件 predicate,则从 Map 中删除 key 的关联。

参数:

返回值:

[h2]func replace(K, (V) -> Bool, (V) -> V)

mut func replace(key: K, predicate: (V) -> Bool, eval: (V) -> V): Option<V>

功能:如果 Map 中存在键 key(假设其关联的值为 v),且 v 满足条件 predicate,则将 Map 中键 key 关联的值替换为 eval(v) 的计算结果;如果 Map 中不存在键 key,或者存在键 key 但关联的值不满足 predicate,则不对 Map 做任何修改。

参数:

返回值:

[h2]func replace(K, (V) -> V)

mut func replace(key: K, eval: (V) -> V): Option<V>

功能:如果 Map 中存在键 key(假设其关联的值为 v),则将 Map 中键 key 关联的值替换为 eval(v) 的计算结果;如果 Map 中不存在键 key,则不对 Map 做任何修改。

参数:

返回值:

[h2]func replace(K, V)

mut func replace(key: K, value: V): Option<V>

功能:如果 Map 中存在 key,则将 Map 中键 key 关联的值替换为 value;如果 Map 中不存在 key,则不对 Map 做任何修改。

参数:

返回值: