我想知道是否可以使用 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
保持为空,因为没有添加任何内容,也不会打印任何内容,因为流也是空的。