flatMap
是 Java 8 中引入的一个流操作,它允许你将多个流合并成一个流,并将每个流中的元素转换为另一种形式。要与其他流操作组合使用 flatMap
,你可以按照以下步骤进行:
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
flatMap
操作,将多个流合并成一个流。例如,假设你有一个 List<List<String>>
,你想将其转换为一个包含所有元素的单个字符串列表:List<List<String>> listOfLists = List.of(
List.of("a", "b"),
List.of("c", "d"),
List.of("e", "f")
);
Stream<String> flatStream = listOfLists.stream()
.flatMap(list -> list.stream());
flatMap
与其他操作组合使用。例如,如果你想过滤掉空字符串并将结果转换为小写,可以这样做:Stream<String> filteredAndLowercaseStream = flatStream
.filter(s -> !s.isEmpty())
.map(String::toLowerCase);
collect
方法将流中的元素收集到一个新的集合中,例如 List
或 Set
:List<String> result = 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<List<String>> listOfLists = List.of(
List.of("a", "b"),
List.of("c", "d"),
List.of("e", "f")
);
Stream<String> flatStream = listOfLists.stream()
.flatMap(list -> list.stream());
Stream<String> filteredAndLowercaseStream = flatStream
.filter(s -> !s.isEmpty())
.map(String::toLowerCase);
List<String> result = filteredAndLowercaseStream
.collect(Collectors.toList());
System.out.println(result); // 输出: [a, b, c, d, e, f]
}
}
这个示例展示了如何将 flatMap
与 filter
和 map
操作组合使用。你可以根据需要添加更多的操作,以满足你的需求。