首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向hash-map中的列表对象添加值

向hash-map中的列表对象添加值
EN

Stack Overflow用户
提问于 2019-07-14 10:37:48
回答 3查看 64关注 0票数 0

我正在尝试将列表对象添加到hashmap

我尝试使用以下代码,但不起作用

代码语言:javascript
复制
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块部件的以下错误。

代码语言:javascript
复制
Wrong 2nd argument type. Found: 'boolean', required:
EN

回答 3

Stack Overflow用户

发布于 2019-07-14 13:29:21

好的,首先,else块中的Map.put是什么?对我来说,这听起来逻辑上是错误的,可能你指的是campaignId还没有出现在地图中的情况。在这种情况下,您只需:

代码语言:javascript
复制
else {
   List<Long> cellList = new ArrayList<>();
   cellList.add(cellUserNumber);
   cellAtributesMap.put(campaignId, cellList);
} 

现在if块在逻辑上看起来也是错误的,不需要维护全局列表(如果targetedOffersCampaignVOList没有被排序怎么办),也不需要每次都put到映射中。

由于这对我来说似乎不是家庭作业,这里有一个更好的版本:

代码语言:javascript
复制
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;
票数 2
EN

Stack Overflow用户

发布于 2019-07-14 13:51:19

我认为你的else代码块有问题:

代码语言:javascript
复制
else {
         Map.put(campaignId, cellAtributesMap.get(campaignId).add(cellUserNumber));
     }

此处的Map调用不正确。如果我的猜测是正确的,那么您希望在以前不存在特定array的情况下初始化一个新的campaignId,在这种情况下,您希望执行此else块。然后您只需像这样更改您的else块:

代码语言:javascript
复制
else
{
  List<Long> newList= new ArrayList<>();
  newList.add(cellUserNumber);
  cellAtributesMap.put("campaignId", newList);
}
票数 0
EN

Stack Overflow用户

发布于 2019-07-14 10:45:09

代码语言:javascript
复制
cellAtributesMap.get(campaignId).add(cellUserNumber)

上面的方法调用返回一个布尔值。else代码块应该如下所示

代码语言:javascript
复制
List<Long> list=new ArrayList<>();//any list implementation
list.add(cellUserNumber);
cellAtributesMap.put(campaignId,list);
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57024171

复制
相关文章

相似问题

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