是否总是需要判断HashMap中是否存在密钥?

我有一个HashMap,比如1000个条目,我希望提高效率.

这可能不是一个好的编程实践,但它将帮助我减少访问次数.还是我遗漏了什么?

[Update]HashMap中没有空值.

推荐答案

你是否存储过空值?如果没有,你可以:

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

Java相关问答推荐

空手道比赛条件

Android Studio—java—在onBindViewHolder中,将断点和空白添加到BackclerView中

为什么Java的代码工作(if condition内部的实例)

我无法将附件发送到NetBeans之外

返回响应时,CamelCase命名约定不起作用

使用Spring和ActiveMQ的侦听器方法引发属性名称不能重复为空警告

在Java 17中使用两个十进制数字分析时间时出错,但在Java 8中成功

MySQL数据库中未应用具有Spring数据的唯一约束

尽管通过中断请求线程死亡,但线程仍将继续存在

Docker不支持弹性APM服务器

如何在Spring Boot中创建可以将值传递给配置的&Enable&Quot;注释?

当b是一个字节并且在Java中值为-1时,为什么b>;>;>;1总是等于-1?

如何从HttpResponse实例获取Entity对象的内容?

A.ForEach与For(类型a:集合)

深度优先搜索实现:算法只向右搜索

向Java进程发送`kill-11`会引发NullPointerException吗?

具有多个模式的DateTimeForMatter的LocalDate.parse失败

如何在ApacheHttpClient 5中为单个请求设置代理?

Java中计算大n和k值模10^9+7的二项式系数的乘法公式输出错误值

在JSON上获取反斜杠