Java中的flatMap是一個用于將多個流合并為一個流的操作,它可以將嵌套的流結構扁平化為一個單一的流。flatMap主要用于處理嵌套的數據結構,例如集合、數組或其他實現了Streamable接口的類型。以下是flatMap可以處理的一些情況:
List<List<Integer>> nestedList = Arrays.asList(
Arrays.asList(1, 2),
Arrays.asList(3, 4),
Arrays.asList(5, 6)
);
List<Integer> flattenedList = nestedList.stream()
.flatMap(list -> list.stream())
.collect(Collectors.toList());
System.out.println(flattenedList); // 輸出: [1, 2, 3, 4, 5, 6]
Set<String> stringSet = new HashSet<>(Arrays.asList("a", "b", "c"));
Stream<String> stringStream = stringSet.stream()
.flatMap(s -> Stream.of(s.split("")));
stringStream.forEach(System.out::println); // 輸出: a, b, c
List<Integer> list1 = Arrays.asList(1, 2, 3);
List<Integer> list2 = Arrays.asList(4, 5, 6);
Stream<Integer> combinedStream = Stream.concat(list1.stream(), list2.stream())
.flatMap(i -> Stream.of(i, i * 2));
combinedStream.forEach(System.out::println); // 輸出: 1, 2, 2, 4, 3, 6, 4, 8
總之,flatMap主要用于處理嵌套的數據結構,它可以讓你輕松地將多個流合并為一個流,并將集合轉換為流。