在Java中,flatMap是Stream接口的一個方法,用于將一個流中的每個元素映射為另一個流,并將所有生成的流合并為一個流。它的使用方法如下:
<R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
其中,mapper參數是一個函數,它將輸入流的元素映射為另一個流。flatMap方法會遍歷輸入流的每個元素,并將每個元素傳遞給mapper函數,然后將生成的流合并為一個流返回。
下面是一個簡單的示例,說明flatMap的用法:
List<Integer> numbers1 = Arrays.asList(1, 2, 3);
List<Integer> numbers2 = Arrays.asList(4, 5, 6);
List<Integer> numbers3 = Arrays.asList(7, 8, 9);
List<List<Integer>> listOfLists = Arrays.asList(numbers1, numbers2, numbers3);
List<Integer> flattenedList = listOfLists.stream()
.flatMap(List::stream)
.collect(Collectors.toList());
System.out.println(flattenedList); // 輸出:[1, 2, 3, 4, 5, 6, 7, 8, 9]
在上面的示例中,我們首先創建了一個包含三個列表的列表。然后使用flatMap方法將每個子列表轉換為一個流,再將所有生成的流合并為一個流。最后,我們使用collect方法將合并后的流轉換為一個列表。
通過使用flatMap方法,我們可以方便地將多個列表合并為一個列表,或者將多個流合并為一個流,以便進行后續的操作。