我想收集 a 内调用的方法返回的值forEach:
@PostMapping(value="insert-ppl")
public String insertPeople(@RequestBody @Valid @NotNull List<Person> people){
people.forEach(this::insertPerson);
}
Run Code Online (Sandbox Code Playgroud)
该insertPerson方法返回一个字符串,表明数据库中的插入是否成功。我想获取每次调用返回的字符串insertPerson。但我不能使用,.collect因为它不是流。
我怎样才能做到这一点?
应该forEach用于对每个元素执行消耗操作。它不应该用于收集任何结果。
为此,您需要采取不同的做法。我认为最好的选择是只使用标准for循环并将每个insertPerson调用的结果添加到一个列表中,然后在最后返回该列表。
理论上,你可以使用类似的东西people.stream().map(this::insertPerson).toList(),但在我看来这不是个好主意,因为map()应该只是将输入映射到输出而没有任何副作用,但是你insertPerson显然有副作用,这可能会让读者理解起来更加“有问题”到底发生了什么。
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |