有时在处理Java stream()时,我发现自己需要使用非终端的forEach()来引发副作用,但又不终止处理。

我怀疑我可以使用.map(item-> f(item))之类的方法来执行此操作,其中方法f会产生副作用,并将该项目返回到流中,但这似乎有点曲折。

有标准的处理方式吗?

最佳答案

就在这里。它称为peek()(例如JavaDoc的示例):

Stream.of("one", "two", "three", "four")
     .peek(e -> System.out.println("Original value: " + e))
     .filter(e -> e.length() > 3)
     .peek(e -> System.out.println("Filtered value: " + e))
     .map(String::toUpperCase)
     .peek(e -> System.out.println("Mapped value: " + e))
     .collect(Collectors.toList());

关于java - 流中的非终端forEach()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40624971/

10-09 04:08