如何使用Stream API实现Note类字段的批量映射赋值?
实现方案
你可以用Stream的forEach终端操作直接完成遍历赋值,效果和原有for循环完全一致:
public void function(int externalId) { Set<Note> notes = getFromRepository(); notes.stream() .forEach(note -> { note.setId(externalId); note.setStatus("Open"); }); }
如果你的JDK版本是8及以上,甚至可以省略stream()调用,直接调用Set自带的forEach方法,写法更简洁:
public void function(int externalId) { Set<Note> notes = getFromRepository(); notes.forEach(note -> { note.setId(externalId); note.setStatus("Open"); }); }
相关说明
- 两种写法的执行逻辑、性能和原有增强for循环完全一致,都是遍历集合逐个修改对象属性
- 不需要使用
map中间操作:你不需要转换对象类型,只是做属性赋值这类消费型操作,直接用forEach即可 - 如果后续需要返回修改后的Note集合,可以补充
collect(Collectors.toSet())操作,当前需求不需要返回的话直接用forEach就满足要求
内容的提问来源于stack exchange,提问作者user13034249
相关产品推荐
相关产品推荐

