使用stream.foreach()的print元素不起作用

lon*_*ome 1 java foreach java-8 java-stream

我有以下代码,并希望在将它们乘以我的10之后打印列表元素,但它表示不允许使用void.怎么解决?

List<Integer> integerList = Arrays.asList(10,22,30); 

   long muliplied = integerList.stream()
                                .map(e -> e*10)
                                .forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

Dav*_*ard 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);


    }
}
Run Code Online (Sandbox Code Playgroud)

打印结果是

100
220
300
Run Code Online (Sandbox Code Playgroud)


Pal*_*nal 5

该类的forEach方法Stream以a Consumer为参数.A Consumer是接受参数但返回void的.现在让我们逐一查看每个步骤返回的内容:

integerList.stream() 返回一个Stream

.map(e -> e*10) 再次返回一个Stream

.forEach(System.out::println); 返回一个空格

您试图将此void分配给long,因此编译器会抱怨.