java - 仔细检查 map 元素是否存在?

标签 java dictionary

在我现在正在处理的代码中,我遇到了以下部分:

PartnerReportItem item = (map.get(partnerId) == null) ? null
    : map.get(partnerId).get(platform); //1, check for existence

if (item == null) {
    item = new PartnerReportItem();
    item.setPlatform(platform);
    item.setPartnerId(partnerId);
    item.setPartnerEmail(partner.getEmail());
    item.setPartnerPaymentDetails(paymentDetails);
    item.setPartnerCoef(partner.getCoef());
    item.setExchangeMap(exchangeMap);

    if (!map.containsKey(partnerId)) //2, double check for existence??
        map.put(partnerId, new HashMap<Platform, PartnerReportItem>());
    map.get(partnerId).put(platform, item);
}

我对 //1//2 感到困惑,因为我认为//2 在这里是不必要的。我们已经检查了 map 中是否存在带有 partnerId 的元素。我能不能得到一个隐藏的想法?

最佳答案

该项目可能为空,因为 map.get 未返回任何内容(外部 map 不存在)或因为内部 map 不包含请求的对象。因此,将执行第二次检查以检测 item 变为 null 的实际原因。

关于java - 仔细检查 map 元素是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27562342/

相关文章:

java - Bean 验证不起作用。我正在使用 JPA 2.0 和 Hibernate 3.3

c# - 重异步处理

Java http 服务器和 web 文件夹

python - 在 Django 模板中迭代 dict 时遇到问题

Python:理解循环

python - 并行写入对象字典

python - 将多个键/值设置到字典中(python 2.72)

python - 将字典中的键和值打印到 html 表(以某种格式) JSON 调用

java - JTable 单元格内的 JDateChooser Enter 键并不总是有效

Java Servlet 过滤器以及其他对象和实体管理器的范围