请考虑以下未编译的示例:
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()它?