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
 

解决方案 »

  1.   

    类似用java 实现数据库SQL中group by(多个字段) 分组 计算和的功能
      

  2.   

    定义个Map, productId+productColor 作为key ,相同的key productNum累加。
      

  3.   


            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());
            }