我可以转换Stream <list <x>&gt;到流<x>?

时间:2015-11-05 10:42:57

标签: java-8 java-stream

这是可能的(伪Java):

someList = [
  [1,2],
  [3,4]
];
Stream<List<X>> a = someList.stream();
Stream<X> b = a.whatever(...);
assert b.collect(list).equals([1,2,3,4]);

更一般地说,流上是否有操作可以增加流中元素的数量(而不是像filter那样减少)?

1 个答案:

答案 0 :(得分:3)

是。 flatMap就是这么做的。

Stream<X> b = someList.stream().flatMap(l -> l.stream());

假设someListList<List<X>>flatMap会将内部列表的所有元素压缩为单个流。