【发布时间】:2021-08-07 23:10:19
【问题描述】:
我正在尝试从销售列表中获取产品的数量。所以我所拥有的是:
public class sale {
public String productId;
.
.//other sale variables
.
public int amountSold;
}
我目前的做法是基于整数的这个答案: how to merge more than one hashmaps also sum the values of same key in java
所以,现在我正在遍历一个销售对象列表,对于每个销售对象,检查 hasmap 是否存在该产品的条目,如果它不存在,是否添加了销售的产品数量目前出售给它。
HashMap<String,Integer> productSaleHash = new HashMap<>();
saleList.forEach(sale -> {
productSaleHash.merge(sale.getProductId(), sale.getAmountSold(), Integer::sum);
});
这行得通,但是我必须将哈希图转换为数组列表,并将销售详细信息添加到每个条目中,因为我还想发送其他销售变量,例如 productName,而不仅仅是 id 和 salecount。因此,我试图找到一种更有效的方法来做到这一点。
这就是我想要做的,我创建了一个名为 productCount 的新 DTO 对象,而不是整数,我将对象存储在 hasmap 中。
public class productCount {
public String productId;
public String productName;
public int amountSold;
}
HashMap<String,ProductCount> productSaleHash = new HashMap<>();
saleList.forEach(sale -> {
productSaleHash.merge(sale.getProductId(), sale.getAmountSold(), "add old amountSold with amount from sale" );
});
【问题讨论】:
-
您想在 HashMap 中用名称替换 ID 吗?合并部分之后
-
当您使用
sale对象(没有此类属性)时,productName来自哪里? -
@azro 不,我正在尝试计算产品销售量。
-
@ernest_k 我不确定你的意思?