一尘不染

HashMap中的密钥存在检查

java

是否总是需要在HashMap中检查密钥是否存在?

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

这可能不是一个好的编程习惯,但是它将帮助我减少访问次数。还是我在这里想念什么?

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


阅读 249

收藏
2020-09-09

共1个答案

一尘不染

您是否曾经存储过空值?如果没有,您可以执行以下操作:

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

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

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
    }
}
2020-09-09