在任何其他中间方法之前,如何在打开Java 8流时运行单个函数?

Mic*_*lin 1 java handler java-8 java-stream

老实说,除了相邻的代码行之外,我还不确定这是否可行.但是,我想我会和社区核实一下.

Java 8允许通过Stream API管理其集合.我们以前需要外部迭代的地方,现在我们可以简单地使用:

<Collection>.stream().forEach([expression]);
Run Code Online (Sandbox Code Playgroud)

当我尝试快速格式化大型集合时,这很好,比如,将它输出到BufferedOutputStream或其他目标.我需要做的是在我旁边写一些关于我正在写的内容的信息.到目前为止,我能想到的最好的是:

labelData();
firstNames.stream().sequential().forEach(sz -> reportData(sz));
Run Code Online (Sandbox Code Playgroud)

然而,如果我可以这样的话,那将是非常好的:

firstNames.stream().sequential().
    .onOpen(labelData())
    .forEach(sz->reportData(sz));
Run Code Online (Sandbox Code Playgroud)

我知道可以使用BaseStream.onClose(Runnable closeHandler)设置一个on-close方法.这种方法是否存在开放?

谢谢你的时间.

Bri*_*etz 6

这个怎么样:

labelData();
firstNames.forEach(this::reportData);
Run Code Online (Sandbox Code Playgroud)

有时更简单的答案更好.