繁体   English   中英

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

[英]How to use one to many Mapping in java 8 stream?

Stream map函数中,我们可以将一个对象转换为另一个对象,因此我们可以将一个包含3个A类元素的Stream转换为另一个包含B类型的3个元素的Stream

如何转换类型的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);
});

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

您可以使用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)));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM