Java 8 个流,未编译的示例

Java 8 Streams, example that not compile

我的问题很短,为什么编译不了?

final ArrayList <Integer> list = IntStream.rangeClosed(1, 20).boxed().collect(Collectors.toList());

问题出现在Collectors.toList()部分。

Collectors.toList() returns 一些 List 实现不一定是 ArrayList,而且可能不是。

尝试

final List <Integer> list = IntStream.rangeClosed(1, 20)
                                     .boxed()
                                     .collect(Collectors.toList());

如果您特别需要 ArrayList,可以使用 collect(Collectors.toCollection(ArrayList::new))

final ArrayList <Integer> list = IntStream.rangeClosed(1, 20)
                                          .boxed()
                                          .collect(Collectors.toCollection(ArrayList::new));