小编典典

HashMap 中的键存在检查

all

是否总是需要检查 HashMap 中的键是否存在?

我有一个包含 1000 个条目的 HashMap,我正在考虑提高效率。如果 HashMap 被非常频繁地访问,那么在每次访问时检查 key
是否存在将导致很大的开销。相反,如果密钥不存在并因此发生异常,我可以捕获异常。(当我知道这种情况很少发生时)。这将使对 HashMap 的访问减少一半。

这可能不是一个好的编程习惯,但它会帮助我减少访问次数。或者我在这里错过了什么?

[ 更新 ]我在 HashMap 中没有空值。


阅读 125

收藏
2022-04-04

共1个答案

小编典典

你曾经存储过空值吗?如果没有,你可以这样做:

Foo value = map.get(key);
if (value != null) {
    ...
} else {
    // No such key
}

否则,如果返回 null 值,则 可以 检查是否存在:

Foo value = map.get(key);
if (value != null) {
    ...
} else {
    // Key might be present...
    if (map.containsKey(key)) {
       // Okay, there's a key but the value is null
    } else {
       // Definitely no such key
    }
}
2022-04-04