小编sta*_*one的帖子

为什么我在collect()之后调用stream()时会得到Stream <Object>?

请考虑以下未编译的示例:

List<Integer> list = Arrays.asList(1, 2, -3, 8);

        list.stream()
                .filter(x -> x > 0)
                .collect(ArrayList::new, ArrayList::add, ArrayList::addAll)
                .stream() // Stream<Object>
                .map(x -> x * 2)
                .forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

如果我更换

.collect(ArrayList::new, ArrayList::add, ArrayList::addAll)
Run Code Online (Sandbox Code Playgroud)

.collect(Collectors.toList())
Run Code Online (Sandbox Code Playgroud)

代码将被编译.那么问题是我如何collect()用供应商和累加器(我需要它)来编写能够在之后调用stream()它?

java java-8 java-stream

4
推荐指数
1
解决办法
73
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1