在Java8函数样式中,如何将值映射到现有的键值对
发布时间:2020-12-15 07:37:22 所属栏目:Java 来源:网络整理
导读:我有一张地图: MapString,ListObject dataMap; 现在我想向地图添加新的键值对,如下所示: if(dataMap.contains(key)) { ListObject list = dataMap.get(key); list.add(someNewObject); dataMap.put(key,list);} else { ListObject list = new ArrayList();
我有一张地图:
Map<String,List<Object>> dataMap; 现在我想向地图添加新的键值对,如下所示: if(dataMap.contains(key)) { List<Object> list = dataMap.get(key); list.add(someNewObject); dataMap.put(key,list); } else { List<Object> list = new ArrayList(); list.add(someNewObject) dataMap.put(key,list); } 我如何使用Java8功能样式? 解决方法
您可以使用computeIfAbsent.
如果映射不存在,只需通过将密钥与新的空列表相关联来创建一个映射,然后将值添加到其中. dataMap.computeIfAbsent(key,k -> new ArrayList<>()).add(someNewObject); 正如文档所述,它返回与指定键关联的当前(现有或计算)值,因此您可以使用ArrayList #add链接调用.当然这假设原始地图中的值不是固定大小的列表(我不知道你是如何填充的)… 顺便说一句,如果你有权访问原始数据源,我会从中获取流并直接使用Collectors.groupingBy. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |