我正在尝试将列表对象添加到hashmap
我尝试使用以下代码,但不起作用
public static Map<Long, List<Long>> getCellAttributes(List<Vo> voList){
LOG.info("VO: {}", Arrays.toString(VO.toArray()));
Map<Long, List<Long>> atributesMap = new HashMap();
List<Long> cellList = new ArrayList<>();
for(: VOList){
Long cID = VO.getID();
Long cellUserNumber = VO.getCellNumber();
if(cellMap.containsKey(ID)){
cellList.add(cellNumber);
cellmap.put(ID, list);
}
else {
Map.put(ID, cellAtributesMap.get(ID).add(cellNumber));
}
}
return cellMao;
}发现else块部件的以下错误。
Wrong 2nd argument type. Found: 'boolean', required:发布于 2019-07-14 13:29:21
好的,首先,else块中的Map.put是什么?对我来说,这听起来逻辑上是错误的,可能你指的是campaignId还没有出现在地图中的情况。在这种情况下,您只需:
else {
List<Long> cellList = new ArrayList<>();
cellList.add(cellUserNumber);
cellAtributesMap.put(campaignId, cellList);
} 现在if块在逻辑上看起来也是错误的,不需要维护全局列表(如果targetedOffersCampaignVOList没有被排序怎么办),也不需要每次都put到映射中。
由于这对我来说似乎不是家庭作业,这里有一个更好的版本:
Map<Long, List<Long>> cellAtributesMap = new HashMap();
// note, the following line is not required and should be removed
//List<Long> cellList = new ArrayList<>();
for(TargetedOffersCampaignVO targetedOffersCampaignVO: targetedOffersCampaignVOList){
Long campaignId = targetedOffersCampaignVO.getCampaignID();
Long cellUserNumber = targetedOffersCampaignVO.getCellUserNumber();
if(cellAtributesMap.containsKey(campaignId)){
// the list in the value already exists anyway, just add a new cell user number to it
cellAttributesMap.get(campaignId).add(cellUserNumber);
}
else {
// create a new key-value pair in the result map
// and add one element which is a current cellUserNumber to it
List<Long> cellList = new ArrayList<>();
cellList.add(cellUserNumber);
cellAtributesMap.put(campaignId, cellList);
}
}
return cellAtributesMap;发布于 2019-07-14 13:51:19
我认为你的
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);
}发布于 2019-07-14 10:45:09
cellAtributesMap.get(campaignId).add(cellUserNumber)上面的方法调用返回一个布尔值。else代码块应该如下所示
List<Long> list=new ArrayList<>();//any list implementation
list.add(cellUserNumber);
cellAtributesMap.put(campaignId,list);https://stackoverflow.com/questions/57024171
复制相似问题