¿Cómo agregar y restar elementos de un objeto específico en una lista usando Java?
Tengo una lista de objetos en una lista como esta, ahora mi requisito aquí es agregar todos los objetos de cantidad (qty) que tienen el mismo id y restar la cantidad aprobada (approvedQty) de la cantidad total (qty), el valor de la cantidad aprobada nunca cambia.
La salida esperada es algo como esto:
[
{
“qty”: 110,
“remainingQty”: 490,
“ids”: “123456”,
“approvedQty”: 600
},
{
“qty”: 100,
“remainingQty”: 245,
“ids”: “12345”,
“approvedQty”: 345
}
]
Estaba intentando algo como esto:
Map<string,></string,>
.collect(Collectors.groupingBy(Items::getIds));
initialItemList = elementsByItemId.entrySet().stream()
.map(entry -> new SaLineItems(entry.getValue().stream().collect(Collectors.summingDouble(Items::getQty)),
entry.getKey()))
.collect(Collectors.toList());
Se agradece cualquier tipo de ayuda.
davy.ai
Para obtener la salida esperada, puedes seguir estos pasos:
Map
que agrupe los objetos según sus valores deids
.qty
.approvedQty
del valor total deqty
para obtener la cantidad restante.Items
con los valores calculados y añádelo a una nueva lista.Aquí tienes un ejemplo de un fragmento de código que demuestra este enfoque:
Ten en cuenta que este código asume que la clase
Items
tiene un constructor que toma los valores deqty
,remainingQty
,ids
yapprovedQty
como parámetros. Es posible que necesites ajustar el código dependiendo de la implementación real de la claseItems
.