java流flatmap vs map

e5nszbig  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(215)

过滤 List 我们可以用

a1.stream().filter(x->x>6).forEach(System.out::println);

过滤我用过的两个列表 FlatMap ```
Stream<List> s2=Stream.of(a1,a2);
s2.flatMap(x->x.stream()).sorted().filter(x->x>6).forEach(System.out::println);

但我试着用这种方式过滤 `List` ```
Stream<List<Integer>> s1=Stream.of(a1);
s1.map(x->x.stream()).filter(x->x>2).forEach(System.out::print);

我犯了个错误-- The operator > is undefined for the argument type(s) Stream<Integer>, int 但是当我在Map中使用平面Map时没有错误为什么

Stream<List<Integer>> s1=Stream.of(a1); 
s1.flatMap(x->x.stream()).filter(x->x>2).forEach(System.out::print);
k7fdbhmy

k7fdbhmy1#

如果你打电话来 map(x->x.stream())Stream<List<Integer>> ,你会得到一个 Stream<Stream<Integer>> . 你不能申请 .filter(x->x>2) 关于其中的要素 Stream ,因为这些元素 Stream<Integer> s、 以及 > 运算符需要两个数字操作数。
如果你使用 flatMap 而不是 map ,您正在转换 Stream<List<Integer>>Stream<Integer> 谁的元素是所有元素中的所有元素 List 原版的s Stream . 因此,您可以应用 .filter(x->x>2) 过滤它们。

相关问题