gpt4 book ai didi

java - 为什么不链接 java.util.stream.Stream#forEach

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:02:50 25 4
gpt4 key购买 nike

在 Java 8 中,java.util.stream.Stream#forEach考虑作为传统 for 循环的替代品。但为什么这不是链函数。说它返回 void 而不是 Stream<T>它自己。

像这样

Arrays
.stream(Girls.toArray())
.forEach(Girls::getUp)
.forEach(Girls::dressUp)
.filter(/* Top 10 Girls */)
.forEach(Gay.getMe()::gotGirl)
.endFilter()// Not an API, but it means remove last filter
.filter(/* Worst 10 Girls */)
.forEach(Gay.get(0)::gotGirl)


girls = Arrays
.stream(Girls.toArray());
girls.forEach(g->{g.getUp();g.dressUp()});
girls.filter(/* Top 10 Girls */)
.forEach(Gay.getMe()::gotGirl);
girls.filter(/* Worst 10 Girls */)
.forEach(Gay.get(0)::gotGirl);

第一个比第二个好。但是第一个的性能更差。

那么,为什么 forEach是不可链接的吗?

最佳答案

您正在寻找的方法存在并称为 Stream::peekStream::map .使用 Stream::peek,上面的代码可能如下所示。

Arrays
.stream(Girls.toArray())
.peek(Girls::getUp)
.peek(Girls::dressUp)
.filter(/* Top 10 Girls */)
.peek(Gay.getMe()::gotGirl)
...

关于java - 为什么不链接 java.util.stream.Stream#forEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24219087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com