stream流和并list
时间: 2023-07-08 08:38:07 浏览: 92
在Java 8中,List、Set、Map等集合类都增加了stream方法,可以通过stream方法将集合转换成Stream流。Stream是一种函数式编程的方式,它可以对集合进行一系列的操作,如筛选、转换、聚合等,可以通过map、filter、reduce等方法实现。
下面是一个将List合并的示例代码:
```
List<List<Integer>> lists = new ArrayList<>();
lists.add(Arrays.asList(1, 2, 3));
lists.add(Arrays.asList(4, 5));
lists.add(Arrays.asList(6, 7, 8, 9));
List<Integer> mergedList = lists.stream()
.flatMap(Collection::stream)
.collect(Collectors.toList());
System.out.println(mergedList); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
```
在示例中,我们创建了三个List,并将它们添加到一个新的List中。然后,我们使用stream方法将新的List转换成了一个Stream流,接着使用flatMap方法将所有的List合并成一个Stream流,最后使用collect方法将Stream流转换成一个List。
除了使用flatMap方法将多个List合并成一个List之外,还可以使用reduce方法将多个List合并成一个List。reduce方法需要提供一个二元运算符,将两个List合并成一个List。
下面是一个使用reduce方法将多个List合并成一个List的示例代码:
```
List<List<Integer>> lists = new ArrayList<>();
lists.add(Arrays.asList(1, 2, 3));
lists.add(Arrays.asList(4, 5));
lists.add(Arrays.asList(6, 7, 8, 9));
List<Integer> mergedList = lists.stream()
.reduce(new ArrayList<>(), (list1, list2) -> {
list1.addAll(list2);
return list1;
});
System.out.println(mergedList); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
```
在示例中,我们使用reduce方法将多个List合并成一个List,reduce方法的第一个参数是一个空的List,第二个参数是一个二元运算符,将两个List合并成一个List。
阅读全文