通过将值求和到数组中的现有键,构造HashMap而不覆盖键

Ramana:

我正在尝试从下面的数组构造一个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中,最好的方法是在求和值时不覆盖?

哈迪J:

您可以这样:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用数组元素创建对象而不覆盖现有键

将NSArray的NSArray中的objectAtIndex值求和或将NSDictionary中的键的现有值添加到现有值

如果键匹配,Java将`HashMap`值附加到现有的HashMap中

Java-向现有的HashMap键添加另一个String值而不覆盖?

将 int 添加到 Python 字典现有键而不覆盖所述键

将数组键复制到另一个现有的数组键中

如何在不覆盖的情况下将新值附加到现有的dict键

将键附加到现有数组值

将键/值对添加到现有对象数组

通过键将 GroupFlux 收集到 Hashmap 中

将键添加到现有javascript数组中的所有值

为什么Map.put()覆盖现有键/值对中的现有值?

如何使用外键将值插入到现有的 SQL Server 表中

如何使用循环将键对添加到对象文字中,而不覆盖现有条目?

如何替换现有键的 JSON 数组中的值?

将键/值对从现有数组翻转到关联数组,该数组允许PHP中具有多个值的键

如何在不循环的情况下使用现有数组值中的动态键映射新数组?

变异对象以将值排序到数组中的键

数组PHP,将值存储到键中,然后检索

将新的键/值对添加到chrome.storage.sync中的现有键

一个衬垫,用于在关联数组中动态创建键,或者,如果存在,将值推送到现有键的数组

hashMap是否为现有键返回零值?

如何通过键减少对象数组并在javascript中求和它的值

将数组值约束到接口的键

如何防止Hashmap覆盖具有不同值的相同键

如何在字典的现有键中添加新值(而不丢失以前的值)?

如何替换现有数据(键/值对),而不是通过不可变js附加到数组?

将HashMap列表检索到另一个列表中,一个键具有多个值

按数组中的多个键对对象值数组求和