flatMap 详细解析 Java 8 Stream API 中的 flatMap 方法
flatMap
方法是 Java 8 Stream API 中的一个重要方法,它用于将对象流中的每个元素转换成另一个流,然后将这些流连接成一个流。这个过程中,flatMap 方法会保留流中的单个元素,但会“扁平化”嵌套的结构。
flatMap 方法的签名如下:
<R> Stream<R> flatMap(Function<? super T, ? extends Stream<? extends R>> mapper)
下面是一个使用 flatMap 方法的例子,假设我们有一个字符串列表,每个字符串都是一个单词列表,我们想要将所有单词放在一个列表中:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
public class FlatMapExample {
public static void main(String[] args) {
List<String> words1 = Arrays.asList("Hello", "World");
List<String> words2 = Arrays.asList("Java", "Streams");
List<String> words3 = Arrays.asList("Are", "Fun");
List<List<String>> lists = Arrays.asList(words1, words2, words3);
Stream<String> stream = lists.stream()
.flatMap(List::stream); // 使用 flatMap 将列表流扁平化
stream.forEach(System.out::println); // 打印所有单词
}
}
在这个例子中,我们首先创建了一个 List 的 List,即一个列表的列表。然后我们使用 lists.stream()
创建了一个流,接着我们调用 flatMap(List::stream)
,它将原始流中的每个列表转换为一个流,并将所有流连接成一个流。最后,我们使用 forEach
打印出所有单词。这个过程中,flatMap 保留了流中的单个元素,即单词,而不是将它们放在列表中。
评论已关闭