英文:
Construct a HashMap without overriding the key by summing the values to an existing key from an array
问题
我正试图从以下数组构建一个 HashMap
product: [
{
id: 12345
qty: 5
},
{
id: 12345
qty: 6
},
{
id: 98765
qty: 10
}
]
**code:**
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);
}
}
从上面的方法中,我正在检查地图中的键,如果是,则通过覆盖现有键将 qty 添加到 totalQty,有没有更好的方法在求和值时不覆盖键呢?
英文:
I'm trying to construct a HashMap from below array
product: [
{
id: 12345
qty: 5
},
{
id: 12345
qty: 6
},
{
id: 98765
qty: 10
}
]
code:
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);
}
}
from the above method I'm checking the key from the map, if yes add the qty to the totalQty by overriding the existing key, any best approach to not override the while summing the values ??
答案1
得分: 5
你可以这样做:
products.stream().collect(Collectors.toMap(Product::getId, Product::getQty, Integer::sum));
英文:
you can do like this:
products.stream().collect(toMap(Product::getId,Product::getQty,Intger::sum));
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论