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

如何在java 8流中使用一对多映射?

如何在java 8流中使用一对多映射?

青春有我 2021-09-15 17:20:45
在map函数中,Stream我们可以将一个对象转换为另一个对象,因此我们可以Stream将包含 3 个 A 类型元素的对象转换为另一个包含 3 个StreamB 类型元素的对象。如何根据条件将 3 个类型元素转换A Stream为 6 个或更多类型元素B Stream?在代码方面。我们可以做的Stream<B> converted = original.map( a -> new B(a) );但是我们怎么能像下面这样呢?Steam<B> converted = original.map( a -> {     if(a.split()){        return [ new B(a), new B(a) ];    }else return new B(a);});我无法找到并理解如何做到这一点。先谢过。
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

您使用flatMap为了将原始元素的每个元素映射Stream到Stream某种类型的元素。


Steam<B> converted = original.flatMap( a -> { 

    if(a.split()){

        return Stream.of(new B(a), new B(a));

    } else {

        return Stream.of(new B(a));

    }

});

或者


Steam<B> converted = original.flatMap(a -> a.split() ? 

                                      Stream.of(new B(a), new B(a)) : 

                                      Stream.of(new B(a)));


查看完整回答
反对 回复 2021-09-15
  • 1 回答
  • 0 关注
  • 324 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信