为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Java 8 流处理嵌套集合

使用 Java 8 流处理嵌套集合

有只小跳蛙 2021-10-28 14:05:21
最近,我在处理嵌套集合(列表中的 Maps 值)时遇到了一个问题:List<Map<String, Object>> items就我而言,此列表包含 10-20 个地图。在某些时候,我不得不将Calculationkey 的值替换description为Rating. 所以我想出了这个解决方案:items.forEach(e -> e.replace("description","Calculation","Rating"));如果此列表中的所有映射都包含 key-Value pair ,那将是非常好的和有效的解决方案["description", "Calculation"]。不幸的是,我知道在整个List<Map<String, Object>>.问题是:是否有更好(更有效)的解决方案来查找和替换这个值,而不是使用 Java-8 流遍历所有 List 元素?完美的做法是在一个流中完成它,而不对其进行任何复杂/混淆的操作。
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

items.stream()

     .filter(map -> map.containsKey("description"))

     .findFirst()

     .ifPresent(map -> map.replace("description", "Calculation", "Rating"));

您必须遍历列表,直到"description"找到带有键的映射。拿起第一个这样的,并尝试更换。


正如@Holger 所指出的,如果"description"所有地图的密钥都不是单一的,而是该对("description", "Calculation")是唯一的:


items.stream()

     .anyMatch(m -> m.replace("description", "Calculation", "Rating"));


查看完整回答
反对 回复 2021-10-28
  • 1 回答
  • 0 关注
  • 275 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信