过滤 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);
1条答案
按热度按时间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
原版的sStream
. 因此,您可以应用.filter(x->x>2)
过滤它们。