最近,我在处理嵌套集合(列表中的 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"));
添加回答
举报
0/150
提交
取消