Java 折叠列表<;列表<;字符串>&燃气轮机;进入列表<;字符串>;使用lambda?

Java 折叠列表<;列表<;字符串>&燃气轮机;进入列表<;字符串>;使用lambda?,java,lambda,java-8,Java,Lambda,Java 8,假设我有一个列表 List<List<String>> lists = new ArrayList<>(); List List=new ArrayList(); 有没有一种聪明的lambda方法可以将其折叠成一个包含所有内容的列表?您可以这样做 List<String> result = lists.stream() .flatMap(l -> l.stream()) .collect(Collectors.toList

假设我有一个列表

List<List<String>> lists = new ArrayList<>();
List List=new ArrayList();
有没有一种聪明的lambda方法可以将其折叠成一个包含所有内容的列表?

您可以这样做

List<String> result = lists.stream()
    .flatMap(l -> l.stream())
    .collect(Collectors.toList());
List result=lists.stream()
.flatMap(l->l.stream())
.collect(Collectors.toList());

这就是flatMap的用途:

List<String> list = inputList.stream() // create a Stream<List<String>>
                             .flatMap(l -> l.stream()) // create a Stream<String>
                                                       // of all the Strings in
                                                       // all the internal lists
                             .collect(Collectors.toList());
List List=inputList.stream()//创建一个流
.flatMap(l->l.stream())//创建一个流
//在所有的字符串中
//所有内部列表
.collect(Collectors.toList());

不要认为这会起作用--
flatMap
的参数必须是一个函数,它可以将
列表
转换为
。请参阅。@ajb:再看一看
函数.identity()
doc,您是对的。谢谢看起来你回答了所有平面图问题。:-)注意lambda也可以替换为
List::stream