如何在Java 8中将列表转换为列表?

如何在Java 8中将列表转换为列表?

如果我有List<List<Object>>,我怎么能把它变成List<Object>它通过使用Java 8的特性,以相同的迭代顺序包含所有对象?



qq_遁去的一_1
浏览 681回答 3
3回答

梵蒂冈之花

你可以用flatMap将内部列表(在将它们转换为流之后)扁平化为单个流,然后将结果收集到列表中:List<List<Object>>&nbsp;list&nbsp;=&nbsp;...List<Object>&nbsp;flat&nbsp;=&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;list.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.flatMap(List::stream) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toList());

侃侃尔雅

flatmap是更好的,但也有其他的方法来达到同样的目的。List<List<Object>>&nbsp;listOfList&nbsp;=&nbsp;...&nbsp;//&nbsp;fillList<Object>&nbsp;collect&nbsp;=&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;listOfList.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(ArrayList::new,&nbsp;List::addAll,&nbsp;List::addAll);

红颜莎娜

这个flatMap方法上Stream当然可以为你平平那些列表,但是它必须创建Stream对象,则为Stream为了结果。你不需要那些Stream物品。下面是执行任务的简单、简洁的代码。//&nbsp;listOfLists&nbsp;is&nbsp;a&nbsp;List<List<Object>>.List<Object>&nbsp;result&nbsp;=&nbsp;new&nbsp;ArrayList<>();listOfLists.forEach(result::addAll);因为List是Iterable,此代码调用这个forEach方法(Java 8特性),它是从Iterable.对象的每个元素执行给定的操作。Iterable直到所有元素都已被处理或操作抛出异常为止。如果指定了迭代顺序,则按迭代顺序执行操作。和一个List氏Iterator按顺序返回项。为Consumer,此代码将方法引用(Java 8特性)传递给预Java 8方法。List.addAll若要按顺序添加内部列表元素,请执行以下操作。按照指定集合的迭代器返回的顺序,将指定集合中的所有元素追加到此列表的末尾(可选操作)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java