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() 方法会是一个非常好的选择,因为它简单直接,而且有很好的性能。但是在某些情况下,其他几种方式可能更为适合。