stream().flatMap
时间: 2023-11-28 09:44:46 浏览: 65
Java 8引入了Stream API,它提供了一种新的处理集合的方式。Stream API提供了一些方法来处理集合中的元素,其中之一是flatMap()方法。
flatMap()方法可以将一个Stream中的每个元素转换为另一个Stream,然后将所有Stream连接成一个Stream。这个方法通常用于将嵌套的集合展开为单个集合。
下面是一个简单的例子,假设我们有一个字符串列表,我们想要将每个字符串拆分为单个字符,并将所有字符连接成一个列表:
```
List<String> list = Arrays.asList("hello", "world");
List<String> result = list.stream()
.flatMap(str -> Arrays.stream(str.split("")))
.collect(Collectors.toList());
System.out.println(result); // [h, e, l, l, o, w, o, r, l, d]
```
在这个例子中,我们首先将字符串列表转换为Stream,然后使用flatMap()方法将每个字符串转换为一个字符Stream,最后使用collect()方法将所有字符收集到一个列表中。
相关问题
stream.flatmap
`stream.flatMap` 是 Java 8 中 Stream API 中的一个方法,它可以将一个流中的每个元素转换为另一个流,然后将这些流合并成一个流。
例如,我们有一个包含多个字符串的流,我们可以使用 `flatMap` 方法将每个字符串拆分为单词,并将所有单词合并成一个流:
```java
Stream<String> words = Stream.of("Hello World", "Stream flatMap");
Stream<String> flatMapWords = words.flatMap(line -> Stream.of(line.split(" ")));
```
这样,`flatMapWords` 流中就包含了所有单词。
list.stream.flatMap
flatMap()方法是Stream API中的一个方法,它的作用是将多个流合并成一个流。通过flatMap()方法,我们可以将一个包含多个子集合的流合并成一个包含所有元素的流。
在使用flatMap()方法时,我们可以结合其他的API进行过滤或转换操作。例如,使用filter()方法可以过滤掉不满足条件的元素,使用map()方法可以对元素进行转换操作。
下面是一个使用flatMap()方法的示例代码:
```java
List<List<Integer>> lists = new ArrayList<>();
List<Integer> arrayList = new ArrayList<>();
arrayList.add(1);
arrayList.add(3);
arrayList.add(22);
arrayList.add(11);
arrayList.add(44);
arrayList.add(null);
arrayList.add(4);
lists.add(arrayList);
List<Integer> arrayList2 = JSON.parseArray(JSON.toJSONString(arrayList), Integer.class);
arrayList2.add(55);
lists.add(arrayList2);
List<Integer> arrayList3 = JSON.parseArray(JSON.toJSONString(arrayList), Integer.class);
arrayList3.add(99);
arrayList3.add(-2);
lists.add(arrayList3);
List<Integer> collect = lists.stream()
.flatMap(item -> item.stream().filter(Objects::nonNull))
.collect(Collectors.toList());
System.out.println(collect);
```
这段代码将一个包含多个子集合的lists流使用flatMap()方法合并成一个包含所有元素的流,并且过滤掉了null元素。最后的输出结果是:[1, 3, 22, 11, 44, 4, 1, 3, 22, 11, 44, 4, 55, 1, 3, 22, 11, 44, 4, 99, -2]。
阅读全文