我想知道是否可以使用流对列表中的每个元素调用函数并修改其值。
假设我有一个整数列表: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) 的列表。
最佳答案
不需要流。您可以使用 List.replaceAll :
list.replaceAll(MyApplication::plusOne);
关于java - 如何在JAVA中对列表中的每个元素运行函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44332026/