我想知道是否有可能使用流来调用列表中的每个元素上的函数,并且还可以使用流调用其值以及其值。如何在JAVA的列表中的每个元素上运行一个函数?
比方说,我有一个整数列表:List<Integer> list = Arrays.asList(1,2,3);
而且,通过一个每递增数的方法:
public static Integer plusOne(Integer n){
return n + 1;
}
这是我用来调用每个元素的功能和修改原始列表:
for (int i = 0; i < list.size(); i++){
list.set(i, plusOne(list.get(i)));
}
但是,我想知道是否有一个更短的方式来写这个使用流?
我试着使用:
list.stream()
.forEach(e -> plusOne(e));
但它似乎并没有改变原来的名单,也没有任何回报......如果这是不可能使用流改变了原来的名单,我怎么至少可以拿到列表的新修改副本?
顺便说一句,输出在调用列表中的函数后应该是(2,3,4)的列表。
使用'map'代替 – Li357
变异你通过流遍历集合似乎是一个非常糟糕的主意开始。您可能更适合用更新的值生成新的“List”。 – Mena
流的许多优点之一是它不鼓励变异的数据结构。 – slim