List合并相同项怎么做

luallen 2013-08-16 09:41:45

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
...全文
217 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghostkngiht 2013-08-16
  • 打赏
  • 举报
回复

        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());
        }
tony4geek 2013-08-16
  • 打赏
  • 举报
回复
定义个Map, productId+productColor 作为key ,相同的key productNum累加。
末日哥 2013-08-16
  • 打赏
  • 举报
回复
需要重写equals和hashCode
末日哥 2013-08-16
  • 打赏
  • 举报
回复
把list的值放到HashSet
luallen 2013-08-16
  • 打赏
  • 举报
回复
类似用java 实现数据库SQL中group by(多个字段) 分组 计算和的功能
wasdasdfqwer 2013-08-16
  • 打赏
  • 举报
回复
最简单的思路,遍历、比较、相加
wasdasdfqwer 2013-08-16
  • 打赏
  • 举报
回复
引用 6 楼 szx_zsx 的回复:
lz连 12+2 都算错了 怎么出来混?
赏金--猎人 2013-08-16
  • 打赏
  • 举报
回复
lz连 12+2 都算错了 怎么出来混?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧