在我现在正在处理的代码中,我遇到了以下部分:
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/