在Java中,可以使用Foreach的分支运行一个流,然后继续使用另一个操作运行流



我想知道是否可以使用 foreach 的分支运行流, 然后继续使用其他操作运行流。

例如:

这不会编译:

(打印值,然后保持映射/平面映射...

List<Integer> list = new ArrayList<>();
list.stream()
.map(x->new ArrayList<int>( x ).forEach(y-> System.out.print(y)) )
.map(...)

如果要打印流中的每个元素,然后执行其他处理,则可以选择:

list.stream()
.peek(System.out::println)  // or any other method that consumes Integers
.map(...)

在这种情况下,peek中的中间操作将在map之前执行,因此每个Integer都将在进一步处理之前打印出来。如果要在进一步处理之前打印所有数字,则需要 2 个流。

代码的这一部分:

list.stream()
.map(x->new ArrayList<int>( x )

似乎不对。首先,您尝试使用原始int而不是 Java 中不允许的Integer来制作ArrayList。这里还x是一个Integer,一个采用整数的ArrayList构造函数使用它来设置容量(底层数组的大小(。在这种情况下,ArrayList保持为空,因为没有添加任何内容,也不会打印任何内容,因为流也是空的。

最新更新