List合并相同项怎么做
public class Stock
{
private String productunitName;
private Integer productId;
private BigDecimal productNum;
private String productColor;
set get ...
}
相同productId,并且相同productColor的合并到一起,并且将productNum相加。
举例:
productId productColor productNum
1 黑 12
2 黑 2
2 白 1
1 黑 2
2 黑 1
合并之后得到结果
productId productColor productNum
1 黑 13
2 白 1
2 黑 3
--------------------编程问答-------------------- 类似用java 实现数据库SQL中group by(多个字段) 分组 计算和的功能 --------------------编程问答-------------------- 把list的值放到HashSet --------------------编程问答-------------------- 需要重写equals和hashCode --------------------编程问答-------------------- 定义个Map, productId+productColor 作为key ,相同的key productNum累加。
--------------------编程问答--------------------
--------------------编程问答-------------------- lz连 12+2 都算错了 怎么出来混? --------------------编程问答-------------------- --------------------编程问答-------------------- 最简单的思路,遍历、比较、相加
List<Stock> list = ...
Map<String, BigDecimal> map = new LinkedHashMap<String, BigDecimal>();
for (Stock stock : list) {
String key = stock.getProductId() + "####" + stock.getProductColor();
if (map.containsKey(key)) {
map.put(key, map.get(key).add(stock.getProductNum()));
} else {
map.put(key, stock.getProductNum());
}
}
for (Map.Entry<String, BigDecimal> entry : map.entrySet()) {
String[] array = entry.getKey().split("####");
System.out.println(array[0] + "\t" + array[1] + "\t" + entry.getValue());
}
补充:Java , Java SE