首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >取消装箱可能会在检查Map中是否存在键后产生空指针异常

取消装箱可能会在检查Map中是否存在键后产生空指针异常
EN

Stack Overflow用户
提问于 2021-10-14 16:25:33
回答 1查看 3.9K关注 0票数 6

Android给出了警告:Unboxing of 'idCollisonMap.get(currentId)' may produce 'NullPointerException',即使在执行Map.get()之前,我正在检查键是否存在。

,我真的有遇到空指针异常的危险吗?我的理解是,.containsKey() 检查可以防止这种情况发生。

代码语言:javascript
复制
Map<String, Integer> idCollisonMap = new HashMap<>();

// All IDs to map
for (MyObject object : objectsWithIdList) {

    // Use the id as the key
    String currentId = object.getId();

    // First check if the ID is null
    if (currentId != null) {
        if (idCollisonMap.containsKey(currentId)) {
            // This ID already exists in the map,  increment value by 1
            idCollisonMap.put(currentId, idCollisonMap.get(currentId) + 1);
        } else {
            // This is a new ID,  create a new entry in the map
            idCollisonMap.put(currentId, 1);
        }
    }
}

代码片段示例输出:

[{T143=1, T153=3, T141=1}]

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-14 16:31:52

假设没有修改映射,而且如果映射从未包含空值,那么在我看来这是安全的--但您可以避免警告,同时通过无条件调用get并使用结果来处理丢失的键,从而提高效率:

代码语言:javascript
复制
Integer currentCount = idCollisionMap.get(currentId);
Integer newCount = currentCount == null ? 1 : currentCount + 1;
idCollisionMap.put(newCount);
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69574185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档