zoukankan      html  css  js  c++  java
  • n个List<Map>合并,Map中某属性值相等的value值相加

    List<Map> maps1 =[{"bigtypes":100,"num":400},{"bigtypes":200,"num":300},{"bigtypes":400,"num":500},{"bigtypes":600,"num":500}]
    
    List<Map> maps2 =[{"bigtypes":400,"num":720},{"bigtypes":500,"num":320},{"bigtypes":200,"num":120}]
    
    
    List<Map> maps3 =[{"bigtypes":700,"num":120},{"bigtypes":500,"num":320},{"bigtypes":100,"num":510}]

    目的为将  bigtypes 属性值相等 num属性值进行相加,bigtypes属性值不相等的List<Map>累加

    将json数组循环赋值给  foodIntakeType

                List<TDiet> tDiets = dietApiService.getDietsByDate(userId, startDate, endDate);
                List<Map<String, String>> list = new ArrayList();
                List<Map<String, String>> newList = new ArrayList();
                int talls=0;
                if(tDiets.size()>0){
                    int a=0;
                    for(TDiet td:tDiets){
                        talls+=Integer.parseInt(td.getFoodIntakeMeasure());//摄入总量
                        a++;
                        String foodIntakeType =td.getFoodIntakeType();
                        org.json.JSONArray jsonArray = new org.json.JSONArray(foodIntakeType);
                        int iSize = jsonArray.length();
                        for (int i = 0; i < iSize; i++) {
                            org.json.JSONObject jsonObj = jsonArray.getJSONObject(i);
                            String bigtypes = jsonObj.get("bigtypes").toString();
                            String num = jsonObj.get("num").toString();
                            Map<String, String> maMap = new HashMap<String, String>();
                            maMap.put("bigtypes", bigtypes);
                            maMap.put("num", num);                        
                            if(a>1){//多组数据
                                newList=list;
                                Map<String,String> newMap =new HashMap<String, String>();
                                int b=0;
                                for (int j = 0; j < list.size(); j++) {
                                    newMap= list.get(j);
                                    if(bigtypes.equals(newMap.get("bigtypes").toString())){//key值相等的:value相加
                                        b++;
                                        newList.remove(j);
                                        Map<String, String> maMap2 = new HashMap<String, String>();
                                        maMap2.put("bigtypes", bigtypes);
                                        int xx= Integer.parseInt(newMap.get("num"))+Integer.parseInt(num);
                                        maMap2.put("num",xx+"" );
                                        newList.add(maMap2);
                                        break;
                                    }
                                }
                                if(b==0){//key值与list<map>的map无共同key的:list新增
                                    newList.add(maMap);    
                                }
                                list= newList;
                            }else{//只有一组数据
                                list.add(maMap);
                            }
                        }
    
                    }
                    //取百分比
                    newList=new ArrayList();
                    for (int c = 0; c < list.size(); c++) {
                        Map<String,String> newMap2 =new HashMap<String, String>();
                        Map<String,String> oldmap=new HashMap<String, String>();
                        oldmap = list.get(c);
                        newMap2.put("bigtypes", oldmap.get("bigtypes"));
                        int aa= Integer.parseInt(oldmap.get("num"));
                        newMap2.put("num",towNumDivide(aa,talls)+"%");
                        newList.add(newMap2);
                    }
                    list=newList;
                }
  • 相关阅读:
    一键复制文本框内容代码、
    改掉这些坏习惯,你不再是菜鸟
    使用cookie保存页面登录信息
    二维数组转换成一维数组
    jQuery选择器总结
    cookie 和session 的区别详解
    PHP扫雷(转载)。
    PHP简易计算器方法2
    PHP简易计算器方法1
    业务逻辑的存储过程(添加学生的案例)(自动编号)
  • 原文地址:https://www.cnblogs.com/libaoting/p/4040804.html
Copyright © 2011-2022 走看看