为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

qq_遁去的一_1 2019-07-11 15:46:13
如何在Java 8中将列表转换为列表?如果我有List<List<Object>>,我怎么能把它变成List<Object>它通过使用Java 8的特性,以相同的迭代顺序包含所有对象?
查看完整描述

3 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

你可以用flatMap将内部列表(在将它们转换为流之后)扁平化为单个流,然后将结果收集到列表中:

List<List<Object>> list = ...List<Object> flat = 
    list.stream()
        .flatMap(List::stream)
        .collect(Collectors.toList());


查看完整回答
反对 回复 2019-07-11
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

flatmap是更好的,但也有其他的方法来达到同样的目的。

List<List<Object>> listOfList = ... // fillList<Object> collect = 
      listOfList.stream()
                .collect(ArrayList::new, List::addAll, List::addAll);


查看完整回答
反对 回复 2019-07-11
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

这个flatMap方法上Stream当然可以为你平平那些列表,但是它必须创建Stream对象,则为Stream为了结果。

你不需要那些Stream物品。下面是执行任务的简单、简洁的代码。

// listOfLists is a List<List<Object>>.List<Object> result = new ArrayList<>();listOfLists.forEach(result::addAll);

因为ListIterable,此代码调用这个forEach方法(Java 8特性),它是从Iterable.

对象的每个元素执行给定的操作。Iterable直到所有元素都已被处理或操作抛出异常为止。如果指定了迭代顺序,则按迭代顺序执行操作。

和一个ListIterator按顺序返回项。

Consumer,此代码将方法引用(Java 8特性)传递给预Java 8方法。List.addAll若要按顺序添加内部列表元素,请执行以下操作。

按照指定集合的迭代器返回的顺序,将指定集合中的所有元素追加到此列表的末尾(可选操作)。


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 680 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号