flatMap
是 Java 8 中引入的一个 Stream API 方法,它用于将多个 Stream 合并为一个 Stream。在处理流操作时,flatMap
非常有用,因为它可以将嵌套的 Stream 结构扁平化为一个 Stream。flatMap
的签名如下:
<R, A> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper);
其中,T
是原始 Stream 的元素类型,R
是扁平化后的 Stream 的元素类型,mapper
是一个函数,它接受一个 T
类型的元素并返回一个 Stream<R>
类型的结果。
下面是一个简单的示例,说明如何使用 flatMap
处理流操作:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class FlatMapExample {
public static void main(String[] args) {
// 创建一个 List<List<String>> 结构
List<List<String>> nestedList = Arrays.asList(
Arrays.asList("A", "B"),
Arrays.asList("C", "D", "E"),
Arrays.asList("F")
);
// 使用 flatMap 将嵌套的 List 扁平化为一个 String 类型的 Stream
Stream<String> flatStream = nestedList.stream()
.flatMap(list -> list.stream());
// 收集扁平化后的 Stream 到一个新的 List 中
List<String> result = flatStream.collect(Collectors.toList());
// 输出结果
System.out.println(result); // 输出:[A, B, C, D, E, F]
}
}
在这个示例中,我们首先创建了一个 List<List<String>>
结构。然后,我们使用 flatMap
方法将嵌套的 List 扁平化为一个 String 类型的 Stream。最后,我们使用 collect
方法将扁平化后的 Stream 收集到一个新的 List 中,并输出结果。