我想用Java 8编写纯函数,它将集合作为参数,对集合每个对象应用一些更改,并在更新后返回一个新集合。我希望遵循FP原则,所以我不希望更新/修改作为参数传递的集合。
有没有什么方法可以通过Stream API做到这一点,而不首先创建原始集合的副本(然后使用forEach或'normal'for循环)?
下面的示例对象,并假设我要将文本追加到object属性之一:
public class SampleDTO {
private String text;
}
所以我想做一些类似下面的事情,但不修改集合。假设“list”是列表
。
list.forEach(s -> {
s.setText(s.getText()+"xxx");
});
您必须具有生成现有sampledTo
实例的副本的方法/构造函数,例如复制构造函数。
然后,您可以将每个原始
到新的SampledTo
实例映射SampledTo
实例,并将它们收集
到新的列表
:
List<SampleDTO> output =
list.stream()
.map(s-> {
SampleDTO n = new SampleDTO(s); // create new instance
n.setText(n.getText()+"xxx"); // mutate its state
return n; // return mutated instance
})
.collect(Collectors.toList());
我试图列出整数列表中的重复元素,例如, 使用jdk 8的流。有人试过吗?要删除重复项,我们可以使用distinct() api。但是如何找到重复的元素呢?有人能帮我吗?
有一个简单的: 以及任务对象的列表。如何通过使用获得每个作为的列表。我试过这个: 但它返回
我有一个我搜索的对象,该对象存储在一个流中。我想让用户能够修改现有流中的元素,并用修改后的元素更新现有列表,而不是创建一个新的列表。这个问题与这个问题相似,只是用户正在将修改后的元素添加到一个新的列表中 项目类别
我有以下几门课: 我有一个物品清单。我想遍历列表并找到具有特定ID的实例。我试着通过溪流来做。
假设我有这样一个列表: 是否可以使用Java8流从该列表中每隔一秒获取一个元素以获得以下内容? 或者甚至每三个元素? 基本上,我正在寻找一个函数来获取流的每n个元素:
我有一个java流,其中我必须只对一些对象应用操作,但我希望得到具有相同元素数的流。例如 我有用户类。 我想增加50个现有余额为500或以上的用户的余额。在返回列表中,我还需要未修改余额的用户, 回报应该是 和原来的顺序一样,但是记录被修改了,这符合条件。任何想法我怎么能用流和功能方式做到这一点,没有如果,等等 我尝试了方法,但它只是将过滤后的值传递到下游。