ale*_*lov 30 java chaining java-8 java-stream
在Java中是否有办法将函数应用于a的所有元素Stream而不破坏Stream链?我知道我可以打电话forEach,但那个方法会返回一个void,而不是一个Stream.
Boh*_*ian 32
有(至少)3种方式.为了示例代码,我假设您要调用2个使用者方法,methodA并且methodB:
A.使用peek():
list.stream().peek(x -> methodA(x)).forEach(x -> methodB(x));
Run Code Online (Sandbox Code Playgroud)
虽然文档说只使用它进行"调试",但它有效(现在正在生产中)
B. map()用于调用methodA,然后将元素返回到流:
list.stream().map(x -> {method1(x); return x;}).forEach(x -> methodB(x));
Run Code Online (Sandbox Code Playgroud)
这可能是最"可接受"的方法.
C.做两件事forEach():
list.stream().forEach(x -> {method1(x); methodB(x);});
Run Code Online (Sandbox Code Playgroud)
这是最不灵活的,可能不适合您的需要.
您正在寻找Stream的map()功能。
例:
List<String> strings = stream
.map(Object::toString)
.collect(ArrayList::new, ArrayList::add, ArrayList::addAll);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33327 次 |
| 最近记录: |