Java 8 将函数应用于流的所有元素,而不会中断流链
2022-08-31 15:25:31
在Java中,有没有办法在不破坏链的情况下将函数应用于a的所有元素?我知道我可以调用 ,但该方法返回一个,而不是一个。Stream
Stream
forEach
void
Stream
在Java中,有没有办法在不破坏链的情况下将函数应用于a的所有元素?我知道我可以调用 ,但该方法返回一个,而不是一个。Stream
Stream
forEach
void
Stream
(至少)有3种方法。为了示例代码,我假设您要调用 2 个使用者方法和:methodA
methodB
A. 用途 :peek()
list.stream().peek(x -> methodA(x)).forEach(x -> methodB(x));
虽然文档说只将其用于“调试”,但它可以正常工作(并且现在正在生产中)
B. 用于调用方法 A,然后将元素返回到流中:map()
list.stream().map(x -> {method1(x); return x;}).forEach(x -> methodB(x));
这可能是最“可接受”的方法。
C. 在 以下位置执行两项操作:forEach()
list.stream().forEach(x -> {method1(x); methodB(x);});
这是最不灵活的,可能不适合您的需求。
您正在寻找 的函数。Stream
map()
例:
List<String> strings = stream
.map(Object::toString)
.collect(ArrayList::new, ArrayList::add, ArrayList::addAll);