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;
}

最佳答案

您可以将flatMapCollections.nCopies一起使用:

public static List<String> products(List<OrderRow> orderRows) {
    return orderRows.stream()
            .flatMap(o -> Collections.nCopies(o.quantity, o.productCode).stream())
            .collect(Collectors.toList());
}

10-07 15:27