Java中的flatMap
是Java 8引入的一個(gè)新特性,它屬于Stream
接口的一個(gè)終端操作。flatMap
的主要功能是將多個(gè)流合并成一個(gè)流,并將每個(gè)流中的元素轉(zhuǎn)換成另一種形式。它主要用于處理嵌套的數(shù)據(jù)結(jié)構(gòu),將它們扁平化為一個(gè)一維的流。
以下是flatMap
可以處理的一些數(shù)據(jù)類型:
flatMap
可以將集合中的每個(gè)元素轉(zhuǎn)換成一個(gè)流,然后將這些流合并成一個(gè)流。例如,你可以使用flatMap
將一個(gè)二維數(shù)組轉(zhuǎn)換成一個(gè)一維數(shù)組。List<List<Integer>> matrix = Arrays.asList(
Arrays.asList(1, 2, 3),
Arrays.asList(4, 5, 6),
Arrays.asList(7, 8, 9)
);
List<Integer> flattened = matrix.stream()
.flatMap(list -> list.stream())
.collect(Collectors.toList());
flatMap
可以將數(shù)組中的每個(gè)元素轉(zhuǎn)換成一個(gè)流,然后將這些流合并成一個(gè)流。例如,你可以使用flatMap
將一個(gè)二維數(shù)組轉(zhuǎn)換成一個(gè)一維數(shù)組。int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int[] flattened = Arrays.stream(matrix)
.flatMapToInt(Arrays::stream)
.toArray();
flatMap
可以處理嵌套的數(shù)據(jù)結(jié)構(gòu),將它們扁平化為一個(gè)一維的流。例如,你可以使用flatMap
將一個(gè)包含多個(gè)列表的列表轉(zhuǎn)換成一個(gè)包含所有元素的列表。List<List<String>> nestedList = Arrays.asList(
Arrays.asList("a", "b"),
Arrays.asList("c", "d"),
Arrays.asList("e", "f")
);
List<String> flattenedList = nestedList.stream()
.flatMap(list -> list.stream())
.collect(Collectors.toList());
總之,flatMap
主要用于處理嵌套的數(shù)據(jù)結(jié)構(gòu),將它們扁平化為一個(gè)一維的流。它可以處理集合、數(shù)組和嵌套的數(shù)據(jù)結(jié)構(gòu)等數(shù)據(jù)類型。