Denis stephanov:
¿Es posible con la API de flujo de Java para duplicar los elementos un par de veces?
Por ejemplo digamos que tenemos una lista de pedidos en los que cada orden tiene un código de producto y cantidad. Quiero obtener una lista de códigos de producto que contiene N copias del código dado donde n es la cantidad.
Cuando llegué a 2 órdenes ("product1" : 3x, "product2": 2x)
que quiero en consecuencia una lista como esta:("product1", "product1", "product1", "product2", "product2")
¿Hay una manera bonita de hacer eso con corrientes sin el viejo for
ciclo?
Código es el siguiente:
@Data
public class OrderRow {
private String productCode;
private int quantity;
}
también:
Se puede utilizar flatMap
con Collections.nCopies
como:
public static List<String> products(List<OrderRow> orderRows) {
return orderRows.stream()
.flatMap(o -> Collections.nCopies(o.quantity, o.productCode).stream())
.collect(Collectors.toList());
}