multiplique los artículos en la corriente

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 forciclo?

Código es el siguiente:

@Data
public class OrderRow {
   private String productCode;

   private int quantity;
}
también:

Se puede utilizar flatMapcon Collections.nCopiescomo:

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

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=225094&siteId=1
Recomendado
Clasificación