首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >流上应用的andThen函数和forEach函数

流上应用的andThen函数和forEach函数
EN

Stack Overflow用户
提问于 2020-12-06 03:30:39
回答 1查看 57关注 0票数 0

给出下面这段代码,我无法理解它是如何返回此输出的:

代码语言:javascript
运行
AI代码解释
复制
* 2 = 2
1 * 2 = 4
2 * 2 = 6
3

public static void generateMultiplicationTable(int number){
Stream<Integer> sin = Stream.of(1, 2, 3 );
Consumer<Integer> c1 = System.out::print;
Consumer<Integer> c2 = x->{ System.out.println(" * "+number+" = "+x*number); };

sin.forEach(c2.andThen(c1));}

我理解andThen是如何工作的,将第一个函数的输出应用于第二个函数作为输入,基于这种理解,它应该返回以下内容:

代码语言:javascript
运行
AI代码解释
复制
* 2 = 2
* 2 = 4
* 2 = 6
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-06 03:52:24

andThen的实现类似于下面的代码:

代码语言:javascript
运行
AI代码解释
复制
default Consumer<T> andThen(Consumer<? super T> after) {
    return (T t) -> { 
        this.accept(t); 
        after.accept(t); 
    };
}

因此,forEach调用可以重写为:

代码语言:javascript
运行
AI代码解释
复制
sin.forEach(number -> {
    c2.accept(number);
    c1.accept(number);
});

因此,对于流的第一个元素,c2打印* 2 = 2,新行c1打印1。第二个元素使c2打印* 2 = 4和一个新行,c1打印2,依此类推。

如果你真的想要一个乘法表,你应该先运行c1,即c1.andThen(c2)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65164398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档