flatMap
是 Java 8 中引入的一个流操作,它允许你将多个流合并成一个流,并将每个流中的元素转换为另一种形式。要与其他流操作组合使用 flatMap
,你可以按照以下步骤进行:
- 首先,确保你已经导入了必要的包:
import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream;
- 创建一个
flatMap
操作,将多个流合并成一个流。例如,假设你有一个List
,你想将其转换为一个包含所有元素的单个字符串列表:- >
List> listOfLists = List.of( List.of("a", "b"), List.of("c", "d"), List.of("e", "f") ); Stream
flatStream = listOfLists.stream() .flatMap(list -> list.stream());
- 在此基础上,你可以将
flatMap
与其他操作组合使用。例如,如果你想过滤掉空字符串并将结果转换为小写,可以这样做:
StreamfilteredAndLowercaseStream = flatStream .filter(s -> !s.isEmpty()) .map(String::toLowerCase);
- 最后,你可以使用
collect
方法将流中的元素收集到一个新的集合中,例如List
或Set
:
Listresult = filteredAndLowercaseStream .collect(Collectors.toList());
将这些步骤组合在一起,完整的示例代码如下:
import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; public class FlatMapExample { public static void main(String[] args) { List> listOfLists = List.of( List.of("a", "b"), List.of("c", "d"), List.of("e", "f") ); Stream
flatStream = listOfLists.stream() .flatMap(list -> list.stream()); Stream filteredAndLowercaseStream = flatStream .filter(s -> !s.isEmpty()) .map(String::toLowerCase); List result = filteredAndLowercaseStream .collect(Collectors.toList()); System.out.println(result); // 输出: [a, b, c, d, e, f] } }
这个示例展示了如何将 flatMap
与 filter
和 map
操作组合使用。你可以根据需要添加更多的操作,以满足你的需求。