JAVA模仿SQL的group by分组

来源:互联网 发布:少儿学编程的优势 编辑:程序博客网 时间:2024/05/17 07:48
public List groupByList(final List<XxxObject> List) {
        if(CollectionUtils.isEmpty(listformdetail)){
            return ;
        }
        List groupbyList = new ArrayList();
        Map<String, Integer> map = new HashMap<String, Integer>();
        
        for (XxxObject obj : List) {
            if (obj.getXxx() != null
                    && obj.getXxx().getXyy() != null) {
                Xyy xyy = obj.getXxx().getXyy();
                //org.apache.commons.lang.StringUtils
                // key值的构成:Xxx编码:Xxx名称,以这两个来进行分组,统计
                String key = StringUtils.trimToEmpty(xyy.getCode()) + ":"
                        + StringUtils.trimToEmpty(xyy.getName());
                if (map.containsKey(key)) {
                    Integer val = obj.getAmount().intValue() + map.get(key).intValue();
                    map.put(key, val);
                } else {
                    map.put(key, obj.getAmount().intValue());
                }
            }
        }

        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            String[] names = StringUtils.splitByWholeSeparator(entry.getKey(), ":");
            Xyy rc = new Xyy();
            XxxDTO dto = new XxxDTO();
            rc.setCode(names[0]);
            rc.setName(names[1]);
            dto.setXyy(rc);
            dto.setAmount(Double.valueOf(entry.getValue()));
            groupbyList.add(dto);
        }
        return groupbyList;
    }
0 0
原创粉丝点击