我正在尝试将列表对象添加到哈希图
我尝试使用以下代码无效
> as.Date(ISOdate("2017","12", "05", "01"))
[1] "2017-12-05"
在else块部分发现以下错误。
public static Map<Long, List<Long>> getCellAttributes(List<TargetedOffersCampaignVO> targetedOffersCampaignVOList){
LOG.info("targetedOffersCampaignVO: {}", Arrays.toString(targetedOffersCampaignVOList.toArray()));
Map<Long, List<Long>> cellAtributesMap = new HashMap();
List<Long> cellList = new ArrayList<>();
for(TargetedOffersCampaignVO targetedOffersCampaignVO: targetedOffersCampaignVOList){
Long campaignId = targetedOffersCampaignVO.getCampaignID();
Long cellUserNumber = targetedOffersCampaignVO.getCellUserNumber();
if(cellAtributesMap.containsKey(campaignId)){
cellList.add(cellUserNumber);
cellAtributesMap.put(campaignId, cellList);
}
else {
Map.put(campaignId, cellAtributesMap.get(campaignId).add(cellUserNumber));
}
}
return cellAtributesMap;
}
答案 0 :(得分:1)
好的,首先,else块中的shoot(n)
是什么?在我看来,这在逻辑上听起来是错误的,可能您是指Map.put
尚未在地图中的情况。
在这种情况下,您可以:
campaignId
现在,else {
List<Long> cellList = new ArrayList<>();
cellList.add(cellUserNumber);
cellAtributesMap.put(campaignId, cellList);
}
块在逻辑上也看起来不正确,不需要维护全局列表(如果if
没有排序的话),也不需要每次targetedOffersCampaignVOList
时间进入地图。
由于对我来说这似乎不是一项作业,因此这里有一个更好的版本:
put
答案 1 :(得分:0)
我认为您在
else
块中遇到问题:
else {
Map.put(campaignId, cellAtributesMap.get(campaignId).add(cellUserNumber));
}
Map
在这里的呼叫是不合适的。如果我的猜测是正确的,那么如果以前不存在特定的array
,那么您想初始化一个新的campaignId
,在这种情况下,您想执行此else
块。然后,您只需像这样更改else
块:
else
{
List<Long> newList= new ArrayList<>();
newList.add(cellUserNumber);
cellAtributesMap.put("campaignId", newList);
}
答案 2 :(得分:-1)
cellAtributesMap.get(campaignId).add(cellUserNumber)
上面的方法调用返回一个布尔值。 您的else块应如下所示
List<Long> list=new ArrayList<>();//any list implementation
list.add(cellUserNumber);
cellAtributesMap.put(campaignId,list);