我想用 Java 8 编写纯函数,它将一个集合作为参数,对该集合的每个对象应用一些更改,并在更新后返回一个新集合。我想遵循 FP 原则,所以我不想更新/修改作为参数传递的集合。
有没有什么方法可以使用 Stream API 而无需先创建原始集合的副本(然后使用 forEach 或“正常”for 循环)?
下面的示例对象并假设我想将文本附加到对象属性之一:
public class SampleDTO {
private String text;
}
所以我想做类似于下面的事情,但不修改集合。假设“列表”是 List<SampleDTO>
。
list.forEach(s -> {
s.setText(s.getText()+"xxx");
});
原文由 Zyga 发布,翻译遵循 CC BY-SA 4.0 许可协议
您必须有一些方法/构造函数来生成现有
SampleDTO
实例的副本,例如复制构造函数。Then you can
map
each originalSampleDTO
instance to a newSampleDTO
instance, andcollect
them into a newList
: