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 中,并輸出結果。