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

时间:2017-06-09 04:02:13

标签: 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);

2 个答案:

答案 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,因此编译器会抱怨。