当前位置:编程学习 > JAVA >>

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累加。
--------------------编程问答--------------------

        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());
        }
--------------------编程问答-------------------- lz连 12+2 都算错了 怎么出来混? --------------------编程问答--------------------
引用 6 楼 szx_zsx 的回复:
lz连 12+2 都算错了 怎么出来混?
--------------------编程问答-------------------- 最简单的思路,遍历、比较、相加
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,