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

在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);

});

我无法找到并理解如何做到这一点。先谢过。


青春有我
浏览 325回答 1
1回答

幕布斯7119047

您使用flatMap为了将原始元素的每个元素映射Stream到Stream某种类型的元素。Steam<B> converted = original.flatMap( a -> {&nbsp;&nbsp; &nbsp; if(a.split()){&nbsp; &nbsp; &nbsp; &nbsp; return Stream.of(new B(a), new B(a));&nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; return Stream.of(new B(a));&nbsp; &nbsp; }});或者Steam<B> converted = original.flatMap(a -> a.split() ?&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Stream.of(new B(a), new B(a)) :&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Stream.of(new B(a)));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java