Java Stream转List的几种方法

1,057 阅读1分钟

Java 8 引入的 Stream API 提供了一种方便高效的处理集合数据的方式。在很多场景下,我们需要将 Stream 转为 List,Java 中提供了几种转换方式,分别如下:

1. Collectors.toList() 方法

List<String> list = Stream.of("Java", "Python", "PHP")
                          .collect(Collectors.toList());

2. Stream 的 toArray() 方法

List<String> list = Stream.of("Java", "Python", "PHP")
                          .toArray(ArrayList::new);

3. 使用 Stream.reduce() 方法

List<String> list = Stream.of("Java", "Python", "PHP")
                          .reduce(new ArrayList<String>(),
                                 (result, item) -> {
                                     result.add(item);
                                     return result;
                                 }, (a, b) -> a);

上述代码中,Stream.reduce() 方法接收 3 个参数,第一个参数是初始值,这里指定为一个空的 ArrayList 对象,第二个参数是一个可以把当前元素加入到 List 中的函数,第三个参数是一个可以合并多个 List 的函数。

4. 使用 List.addAll() 方法

List<String> list = new ArrayList<>();
Stream.of("Java", "Python", "PHP").forEach(list::add);

或者

List<String> list = new ArrayList<>();
list.addAll(Stream.of("Java", "Python", "PHP").collect(Collectors.toList()));

使用 List.addAll() 方法,我们可以很方便地把 Stream 转为 List,这种方式可以在需要对 List 进行批量添加删除等操作时方便使用。


总的来说,以上几种方法都可以把 Stream 转为 List,具体使用方式可以根据具体情况选择。通常来说,使用 Collectors.toList() 方法会是一个非常好的选择,因为它简单直接,而且有很好的性能。但是在某些情况下,其他几种方式可能更为适合。