如何使用 java 从列表中的特定对象中添加和减去元素?

How to do add and subtract elements from particular object in list using java?

我在这样的列表中有对象列表,现在我的要求是添加所有具有相同 ID 的对象并从整个数量中减去批准的数量,批准的数量值永远不会改变

[
  {
    "qty": 50,
    "remainingQty": 0,
    "ids": "123456",
    "approvedQty": 600
  },
  {
    "qty": 60,
    "remainingQty": 0,
    "ids": "123456",
    "approvedQty": 600
  },
  {
    "qty": 100,
    "remainingQty": 0,
    "ids": "12345",
    "approvedQty": 345
  }
]


Expected Output is something like this 

[
  {
    "qty": 110,
    "remainingQty": 490,
    "ids": "123456",
    "approvedQty": 600
  },
  {
    "qty": 100,
    "remainingQty": 245,
    "ids": "12345",
    "approvedQty": 345
  }
]

我正在尝试这样的事情,

  Map<String, List<Items>> elementsByItemId = initialItemList.stream()
                .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());

感谢任何形式的帮助..

以下应按预期工作:

public class Main {
    public static void main(String[] args) {
        List<Items> initialItemList = new ArrayList<>();
        initialItemList.add(new Items(50, 0, "123456", 600));
        initialItemList.add(new Items(60, 0, "123456", 600));
        initialItemList.add(new Items(100, 0, "12345", 345));

        Map<String, List<Items>> elementsByItemId = initialItemList.stream()
                .collect(Collectors.groupingBy(Items::getIds));

        List<Items> processedItems = elementsByItemId.values().stream().map(items -> {
            String ids = "";
            int qty = 0;
            int approvedQty = 0;
            for (Items item : items) {
                ids = item.getIds();
                approvedQty = item.getApprovedQty();
                qty += item.getQty();
            }

            return new Items(qty, approvedQty - qty, ids, approvedQty);
        }).collect(Collectors.toList());
        System.out.println(processedItems);
    }
}