Prz*_*iec 8 java optimization dictionary java-8 java-stream
最近我在使用嵌套集合(List中的Maps值)时遇到了一个问题:
List<Map<String, Object>> items
Run Code Online (Sandbox Code Playgroud)
在我的案例中,此列表包含10-20个地图.在某些时候我不得不将Calculationkey的值替换description为Rating.所以我想出了这个解决方案:
items.forEach(e -> e.replace("description","Calculation","Rating"));
Run Code Online (Sandbox Code Playgroud)
如果此列表中的所有映射都包含键值对,那将是非常精细和有效的解决方案["description", "Calculation"].不幸的是,我知道整体上只有一对List<Map<String, Object>>.
问题是:
是否有更好(更有效)的解决方案来查找和替换这一个值,而不是使用Java-8流迭代所有List元素?
完美将是在一个流中完成它而不对其进行任何复杂/混淆操作.
items.stream()
.filter(map -> map.containsKey("description"))
.findFirst()
.ifPresent(map -> map.replace("description", "Calculation", "Rating"));
Run Code Online (Sandbox Code Playgroud)
您将不得不遍历列表,直到"description"找到带有密钥的地图.拿起第一个,并尝试更换.
正如@Holger所指出的,如果"description"所有地图的密钥都不是单一的,那么该对("description", "Calculation")是唯一的:
items.stream()
.anyMatch(m -> m.replace("description", "Calculation", "Rating"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
289 次 |
| 最近记录: |