我有以下代码,并希望在将它们乘以10之后打印列表元素,但它表示不允许使用void。怎么解决?
List<Integer> integerList = Arrays.asList(10,22,30);
long muliplied = integerList.stream()
.map(e -> e*10)
.forEach(System.out::println);
答案 0 :(得分:5)
您无法保存方法的结果,因为其返回类型为void。
尝试以下代码
package eu.webfarmr;
import java.util.Arrays;
import java.util.List;
public class StreamExample {
public static void main(String[] args) {
List<Integer> integerList = Arrays.asList(10, 22, 30);
integerList.stream().map(e -> e * 10).forEach(System.out::println);
}
}
打印结果是
100
220
300
答案 1 :(得分:5)
forEach
类的Stream
方法以Consumer
为参数。 Consumer
是接受参数但返回void的。现在让我们逐一查看每个步骤返回的内容:
integerList.stream()
返回一个流
.map(e -> e*10)
再次返回一个流
.forEach(System.out::println);
返回空白
您正在尝试将此void分配给long,因此编译器会抱怨。