java流 flatMap
时间: 2023-11-08 17:54:48 浏览: 86
flatMap是Java流(Stream)中的一个操作,它能够将流中的元素映射为新的流,并将这些新流合并成一个流。这样就能够实现将多个嵌套的集合压平为一个集合的效果。
举个例子来说,如果我们有一个二维数组[[1,3],[2,4]],我们想要得到一个一维数组[1,3,2,4],就可以使用flatMap操作。代码如下:
```
List<Integer> lista = new ArrayList<>();
lista.add(1);
lista.add(3);
List<Integer> listb = new ArrayList<>();
listb.add(2);
listb.add(4);
List<List<Integer>> listc = new ArrayList<>();
listc.add(lista);
listc.add(listb);
List<Integer> listd = listc.stream().flatMap(ele -> ele.stream()).collect(Collectors.toList());
System.out.println(listd);
```
在上面的代码中,我们首先将二维数组转换为一个包含两个列表的列表。然后使用flatMap操作将它们压平为一个一维列表。最后通过collect方法将结果收集到一个新的列表中。
除了将嵌套的集合压平为一个集合,flatMap还可以用于将元素进行拆分。比如,我们有一个包含字符串的列表["ABC", "DEF", "GHI"],我们想要将每个字符串拆分为单个字符并收集到一个新的列表中,就可以使用flatMap操作。代码如下:
```
ArrayList<String> list = new ArrayList<>();
list.add("ABC");
list.add("DEF");
list.add("GHI");
List<String> collect = list.stream().flatMap(ele -> Stream.of(ele.split(""))).collect(Collectors.toList());
System.out.println(collect);
```
在上面的代码中,我们首先将每个字符串拆分为单个字符的流,然后使用flatMap将这些流合并成一个流,并最后通过collect方法将结果收集到一个新的列表中。
阅读全文