MST

星途 面试题库

面试题:Java中Stream flatMap方法如何实现一对多转换,请举例说明

在Java的Stream API中,flatMap方法用于将流中的每个元素转换为另一个流,并将这些流扁平化为一个单一的流。请你编写一段Java代码,使用Stream的flatMap方法实现将一个包含多个字符串列表的列表,扁平化为一个单一的字符串流,并输出每个字符串。例如,输入为[["a","b"],["c","d"]],输出应为"a","b","c","d"。
25.9万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
import java.util.ArrayList;
import java.util.Arrays;
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 = Arrays.asList(
                Arrays.asList("a", "b"),
                Arrays.asList("c", "d")
        );

        List<String> flatList = listOfLists.stream()
               .flatMap(List::stream)
               .collect(Collectors.toList());

        flatList.forEach(System.out::println);
    }
}

上述代码通过stream方法将外层List转换为流,接着使用flatMap方法将内层List的流扁平化为一个流,最后通过collect方法收集到List中并输出每个字符串。如果只是想直接输出,可以使用以下方式:

import java.util.Arrays;
import java.util.List;

public class FlatMapPrintExample {
    public static void main(String[] args) {
        List<List<String>> listOfLists = Arrays.asList(
                Arrays.asList("a", "b"),
                Arrays.asList("c", "d")
        );

        listOfLists.stream()
               .flatMap(List::stream)
               .forEach(System.out::println);
    }
}