在map
的{{1}}函数中,我们可以将一个对象转换为另一个对象,因此我们可以将包含3个类型A元素的一个Stream
转换为另一个Stream
中的3个对象元素类型B。
如何根据条件将Stream
A
类型的3个元素转换为Stream
B
类型的6个或更多元素?
在代码方面。
我们可以做到
Stream
但是我们如何喜欢关注?
Stream<B> converted = original.map( a -> new B(a) );
我找不到并了解如何做到这一点。谢谢你。
答案 0 :(得分:9)
使用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)));