将List<Object[]>按照某字段值分类,对数据重新封装。

来源:互联网 发布:算法分析和复杂性理论 编辑:程序博客网 时间:2024/06/05 10:15
package cn.java.utils;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import cn.java.bean.Probe;public class Test {    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub                List<Object[]> srcLst = new ArrayList<Object[]>();                Object[] objArr1 = {"probe00", "run", 3};        Object[] objArr2 = {"probe01", "run", 1};        Object[] objArr3 = {"probe02", "run", 1};        Object[] objArr4 = {"probe00", "stop", 1};        Object[] objArr5 = {"probe01", "stop", 1};        Object[] objArr6 = {"probe02", "stop", 1};        Object[] objArr7 = {"probe00", "fail", 1};        Object[] objArr8 = {"probe01", "fail", 1};        Object[] objArr9 = {"probe02", "fail", 1};        Object[] objArr10 = {"probe00", "suspend", 1};        Object[] objArr11 = {"probe01", "suspend", 1};        Object[] objArr12 = {"probe02", "suspend", 1};                srcLst.add(objArr1);        srcLst.add(objArr2);        srcLst.add(objArr3);        srcLst.add(objArr4);        srcLst.add(objArr5);        srcLst.add(objArr6);        srcLst.add(objArr7);        srcLst.add(objArr8);        srcLst.add(objArr9);        srcLst.add(objArr10);        srcLst.add(objArr11);        srcLst.add(objArr12);                List<Probe> proLst = new ArrayList<Probe>();                WebUtils.convToEntity(srcLst, proLst, "cn.java.bean.Probe");                for (Probe prb : proLst) {            System.out.println(prb.getRnum() + ", " + prb.getFnum());        }                Map<String, Probe> temp = new HashMap<String, Probe>();                for (Probe prb : proLst) {                        String prbName = prb.getProbeName();            String testType = prb.getTestStatus();                        int rnum = prb.getRnum();            int snum = prb.getSnum();            int fnum = prb.getFnum();                        if(null == temp.get(prbName)){                                temp.put(prbName, prb);                            }else{                Probe temPrb = temp.get(prbName);                                int tempRnum = temPrb.getRnum();                int tempSnum = temPrb.getSnum();                int tempFnum = temPrb.getFnum();                                if("run".equals(testType)){                    temPrb.setRnum(rnum + tempRnum);                }else if("stop".equals(testType)){                    temPrb.setSnum(rnum + tempSnum);                }else{                    temPrb.setFnum(rnum + tempFnum);                }            }                    }                List<Probe> prbLst = new ArrayList<Probe>();        for (Entry<String, Probe> ent : temp.entrySet()) {            Probe val = ent.getValue();//            System.out.println(val.getProbeName() + "运行:" + val.getRnum() + ", 停止:" + val.getSnum() + ", 失败:" + val.getFnum());            prbLst.add(val);        }                for (Probe prb : prbLst) {            System.out.println(prb.getProbeName() + "运行:" + prb.getRnum() + ", 停止:" + prb.getSnum() + ", 失败:" + prb.getFnum());        }            }}


 

probe02运行:1, 停止:1, 失败:2
probe01运行:1, 停止:1, 失败:2
probe00运行:3, 停止:1, 失败:2

原创粉丝点击