java - 如何在JAVA中对列表中的每个元素运行函数?

标签 java arrays list functional-programming java-stream

我想知道是否可以使用流对列表中的每个元素调用函数并修改其值。

假设我有一个整数列表: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/

相关文章:

java - java 替换字符串中的几个不同的字符

c - 在C中重绘数组

python - 直接从列表理解中获取列表(没有嵌套列表)

list - 从两个不同大小的列表创建对列表

Java 邮件无法使用 tls 或 ssl 连接到 smtp

java - JPA Criteria API 在 order by 语句中使用 ISNULL

java - 如何检查均匀分布的元素的最大数量?

arrays - 分区求和算法

java - 计算从 1 到 n 的个数的替代解决方案

c - 使用 malloc 动态创建字符串数组