使用 Java 8 流处理嵌套集合

最近,我在处理嵌套集合(列表中的 Maps 值)时遇到了一个问题:

List<Map<String, Object>> items

就我而言,此列表包含 10-20 个地图。在某些时候,我不得不将Calculationkey 的值替换descriptionRating. 所以我想出了这个解决方案:

items.forEach(e -> e.replace("description","Calculation","Rating"));

如果此列表中的所有映射都包含 key-Value pair ,那将是非常好的和有效的解决方案["description", "Calculation"]。不幸的是,我知道在整个List<Map<String, Object>>.

问题是:

是否有更好(更有效)的解决方案来查找和替换这个值,而不是使用 Java-8 流遍历所有 List 元素?

完美的做法是在一个流中完成它,而不对其进行任何复杂/混淆的操作。


有只小跳蛙
浏览 276回答 1
1回答

慕沐林林

items.stream()&nbsp; &nbsp; &nbsp;.filter(map -> map.containsKey("description"))&nbsp; &nbsp; &nbsp;.findFirst()&nbsp; &nbsp; &nbsp;.ifPresent(map -> map.replace("description", "Calculation", "Rating"));您必须遍历列表,直到"description"找到带有键的映射。拿起第一个这样的,并尝试更换。正如@Holger 所指出的,如果"description"所有地图的密钥都不是单一的,而是该对("description", "Calculation")是唯一的:items.stream()&nbsp; &nbsp; &nbsp;.anyMatch(m -> m.replace("description", "Calculation", "Rating"));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java