在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)));
添加回答
举报
0/150
提交
取消