Java流API是否可以多次复制项目?
例如,假设我们有一个订单列表,其中每个订单都有产品代码和数量。我想获得一个产品代码列表,其中包含给定代码的n个副本,其中n是数量。
当我有2个订单("product1" : 3x, "product2": 2x)
时,我希望得到这样的列表:("product1", "product1", "product1", "product2", "product2")
有没有使用旧的for
循环的流的漂亮方法?
代码如下:
@Data
public class OrderRow {
private String productCode;
private int quantity;
}
最佳答案
您可以将flatMap
与Collections.nCopies
一起使用:
public static List<String> products(List<OrderRow> orderRows) {
return orderRows.stream()
.flatMap(o -> Collections.nCopies(o.quantity, o.productCode).stream())
.collect(Collectors.toList());
}