【问题标题】:Why Concurrent hash map does not allow null key or null values为什么并发哈希映射不允许空键或空值
【发布时间】:2023-03-11 14:29:02
【问题描述】:

我读了很多文章但无法理解并发哈希映射不允许空键或空值的原因。 有些文章给出了这样的解释:

    if (m.containsKey(k)) {
       return m.get(k);
    } else {
       throw new KeyNotPresentException();
    }

由于m 是一个并发映射,键k 可能在containsKeyget 调用之间被删除,导致这个sn-p 返回一个从未在表中的空值,而不是所需的KeyNotPresentException。

但是,非空键也是如此。 谁能解释一下原因。

【问题讨论】:

标签: concurrenthashmap


【解决方案1】:

ConcurrentMaps (ConcurrentHashMaps, ConcurrentSkipListMaps) 中不允许使用空值的主要原因是无法容纳在非并发映射中几乎无法容忍的歧义。 ... get(key) 返回 null ,您无法检测 key 是否显式映射到 null 与 key 未映射。

【讨论】:

    猜你喜欢
    • 2011-04-07
    • 2020-01-17
    • 2012-08-12
    • 1970-01-01
    • 2023-03-16
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多