Создайте HashMap без переопределения ключа, суммируя значения для существующего ключа из массива - PullRequest
2 голосов
/ 08 апреля 2020

Я пытаюсь построить HashMap из массива ниже

product: [
 {
  id: 12345
  qty: 5
 },
 {
  id: 12345
  qty: 6
 },
 {
  id: 98765
  qty: 10
 }
]

код:

HashMap<Long, Integer> productMap = new HashMap<>();
int totalQty = 0;

for (Product product : products) {
 Long id = product.getId();
 if (productMap.containsKey(id)) {
  productMap.put(id, totalQty + productMap.get(id).intValue());
 } else {
  productMap.put(id, totalQty);
 }
}

из вышеописанного метода я проверяю ключ из карты, если да, добавьте кол-во к totalQty, переопределив существующий ключ, любой лучший способ не переопределять время при суммировании значений ??

1 Ответ

5 голосов
/ 08 апреля 2020

вы можете сделать так:

products.stream().collect(toMap(Product::getId,Product::getQty,Intger::sum));
...