a514977012 2021-05-26 21:15 采纳率: 0%
浏览 39

求助如下:list《map》按照map的BASETYPE和TASKDATE分组合并TYPE

 

期望得到这样的顺序B2--1月---{TASKDATE=1月, SDATE=null, DATEID=null, BASETYPE=B2, XSDATE=B2-1月, BLU APP类1=19000.0, BLU APP类=2000.0, Sorting数量=91000, Sorting不良率=50}

目前这个那顺序有点乱

private static void name4() {
        List<LinkedHashMap<String, Object>> list = new ArrayList<LinkedHashMap<String, Object>>();
        ArrayList<LinkedHashMap<String, Object>> res = new ArrayList<LinkedHashMap<String, Object>>();
        List<HashMap<String, Object>> resm = new ArrayList<HashMap<String, Object>>();
        LinkedHashMap<String, Object> map1= new LinkedHashMap<String, Object>();
        LinkedHashMap<String, Object> map2 = new LinkedHashMap<String, Object>();
        LinkedHashMap<String, Object> map3 = new LinkedHashMap<String, Object>();
        LinkedHashMap<String, Object> map4 = new LinkedHashMap<String, Object>();
        LinkedHashMap<String, Object> map5 = new LinkedHashMap<String, Object>();
        LinkedHashMap<String, Object> map6 = new LinkedHashMap<String, Object>();
        LinkedHashMap<String, Object> map7= new LinkedHashMap<String, Object>();
        LinkedHashMap<String, Object> map8 = new LinkedHashMap<String, Object>();
        LinkedHashMap<String, Object> map9 = new LinkedHashMap<String, Object>();
        LinkedHashMap<String, Object> map10 = new LinkedHashMap<String, Object>();
        LinkedHashMap<String, Object> map11 = new LinkedHashMap<String, Object>();
        LinkedHashMap<String, Object> map12 = new LinkedHashMap<String, Object>();
        
        map1.put("TASKDATE", "1月");
        map1.put("BASETYPE", "B1");
        map1.put("TYPE", "BLU APP类");
        map1.put("PPM", "50");
        map1.put("TYPENUMBER", "2000");
        map1.put("TASKNUMBER", "91000");
        
        map7.put("TASKDATE", "1月");
        map7.put("BASETYPE", "B1");
        map7.put("TYPE", "BLU APP类1");
        map7.put("PPM", "50");
        map7.put("TYPENUMBER", "2000");
        map7.put("TASKNUMBER", "91000");
        
        map2.put("TASKDATE", "2月");
        map2.put("BASETYPE", "B1");
        map2.put("TYPE", "BLU APP类1");
        map2.put("PPM", "50");
        map2.put("TYPENUMBER", "1000");
        map2.put("TASKNUMBER", "1000");
        
        map8.put("TASKDATE", "2月");
        map8.put("BASETYPE", "B1");
        map8.put("TYPE", "BLU APP类");
        map8.put("PPM", "50");
        map8.put("TYPENUMBER", "2000");
        map8.put("TASKNUMBER", "1000");
        
        
    
        map3.put("TASKDATE", "3月");
        map3.put("BASETYPE", "B1");
        map3.put("TYPE", "BLU APP类1");
        map3.put("PPM", "50");
        map3.put("TYPENUMBER", "18000");
        map3.put("TASKNUMBER", "391000");
        
        map9.put("TASKDATE", "3月");
        map9.put("BASETYPE", "B1");
        map9.put("TYPE", "BLU APP类");
        map9.put("PPM", "50");
        map9.put("TYPENUMBER", "2000");
        map9.put("TASKNUMBER", "391000");
        
        map4.put("TASKDATE", "1月");
        map4.put("BASETYPE", "B2");
        map4.put("TYPE", "BLU APP类1");
        map4.put("PPM", "50");
        map4.put("TYPENUMBER", "19000");
        map4.put("TASKNUMBER", "91000");
        
        map10.put("TASKDATE", "1月");
        map10.put("BASETYPE", "B2");
        map10.put("TYPE", "BLU APP类");
        map10.put("PPM", "50");
        map10.put("TYPENUMBER", "2000");
        map10.put("TASKNUMBER", "91000");
        
        
        map5.put("TASKDATE", "2月");
        map5.put("BASETYPE", "B2");
        map5.put("TYPE", "BLU APP类1");
        map5.put("PPM", "50");
        map5.put("TYPENUMBER", "19000");
        map5.put("TASKNUMBER", "91000");
        
        map11.put("TASKDATE", "2月");
        map11.put("BASETYPE", "B2");
        map11.put("TYPE", "BLU APP类");
        map11.put("PPM", "50");
        map11.put("TYPENUMBER", "2000");
        map11.put("TASKNUMBER", "91000");
        
        map6.put("TASKDATE", "3月");
        map6.put("BASETYPE", "B2");
        map6.put("TYPE", "BLU APP类1");
        map6.put("PPM", "50");
        map6.put("TYPENUMBER", "19000");
        map6.put("TASKNUMBER", "591000");
        
        map12.put("TASKDATE", "3月");
        map12.put("BASETYPE", "B2");
        map12.put("TYPE", "BLU APP类");
        map12.put("PPM", "50");
        map12.put("TYPENUMBER", "2000");
        map12.put("TASKNUMBER", "591000");
        list.add(map1);
        list.add(map7);
        list.add(map2);
        list.add(map8);
        list.add(map3);
        list.add(map9);
        list.add(map4);
        list.add(map10);
        list.add(map5);
        list.add(map11);
        list.add(map6);
        list.add(map12);
        
        
        List<Object> tempList = (List<Object>) list.stream().map(pc -> pc.get("BASETYPE")).distinct().collect(Collectors.toList());
        
        Map<String, List<Map<String, Object>>> onekeyMap = new LinkedHashMap<>();
        
        for (LinkedHashMap<String, Object> obj : list) {
            String one = "";
            //根据groupList的第一层
            one =  obj.get("BASETYPE").toString();
//
            if (null == onekeyMap.get(one)) {
                onekeyMap.put(one,new ArrayList<>() );
            }
              onekeyMap.get(one).add(obj);
        }
        System.out.println(onekeyMap);
        System.out.println("----------------------------");
        
        ArrayList<LinkedHashMap<String, Object>> result = new ArrayList<LinkedHashMap<String, Object>>();
        
        for (Map.Entry<String, List<Map<String, Object>>> oneEntry : onekeyMap.entrySet()) {
            List<Map<String, Object>> resultList = new ArrayList<>();
            LinkedHashMap<String, Object> twoMap = new LinkedHashMap<>();
            LinkedHashMap<String, Object> twoMapx = new LinkedHashMap<>();
            List<Map<String, Object>> twoList = oneEntry.getValue();
            List<Object> tempListDate = (List<Object>) twoList.stream().map(pc -> pc.get("TASKDATE")).distinct().collect(Collectors.toList());
           // System.out.println(oneEntry.getKey());
            System.out.println(twoList);
            System.out.println("============================");
            for(Object x : tempListDate) {
                LinkedHashMap<String, Object> newmap = new LinkedHashMap<>();
                LinkedHashMap<String, Object> Nummap = new LinkedHashMap<>();
                
                for (int i = 0; i < twoList.size(); i++) {
                    Map<String, Object> map = twoList.get(i);
                    Nummap.put("Sorting数量", map.get("TASKNUMBER").toString());
                    Nummap.put("Sorting不良率", map.get("PPM").toString());
                        //if(x+"-"+oneEntry.getKey()).equals(map.get("TASKDATE")+"-"+map.get("BASETYPE"))) {
                       if(oneEntry.getKey().equals(map.get("BASETYPE"))) {
                           if (x.equals(map.get("TASKDATE"))) {
                            Double sortingBadRatio = 0.0 ;//不良率;
                            Double taskNum = 0.0; //sorting数量
                            Double typeNum = 0.0; //分类的数量 
                            newmap.put("TASKDATE", map.get("TASKDATE"));
                            newmap.put("SDATE", map.get("SDATE"));
                            newmap.put("DATEID", map.get("DATEID"));
                            newmap.put("BASETYPE",oneEntry.getKey() );
                            newmap.put("XSDATE", oneEntry.getKey()+"-"+x);
                            taskNum   = Double.parseDouble(map.get("TASKNUMBER").toString());
                            sortingBadRatio = Double.parseDouble(map.get("PPM").toString()) ;
                            //newmap.put("Sorting数量", DateFormatList.getDecimalAuto(taskNum));
                            //newmap.put("Sorting不良率", DateFormatList.getDecimalAuto(sortingBadRatio));
                            typeNum= Double.parseDouble(map.get("TYPENUMBER").toString());
                            newmap.put(map.get("TYPE").toString(), DateFormatList.getDecimalAuto(typeNum));
                            
                        }else {
                            
                            continue;
                            //newmap = new LinkedHashMap<>();
                        }
                    }else {
                        //newmap.put("Sorting数量", map.get("TASKNUMBER").toString());
                           //newmap.put("Sorting不良率", map.get("PPM").toString());
                        continue;
                        
                    }
                    
                      // Nummap.putAll(newmap);
                       
                       newmap.putAll(Nummap);
                       
                    //newmap.put("Sorting数量", map.get("TASKNUMBER").toString());
                       //newmap.put("Sorting不良率", map.get("PPM").toString());
                 // System.out.println(oneEntry.getKey()+"--"+x+"---"+newmap+"--"+i);
                }
                System.out.println(oneEntry.getKey()+"--"+x+"---"+newmap);
                resultList.add(newmap); 
          }
           twoMap.put(oneEntry.getKey(), resultList) ;
          
          //System.out.println(twoMap);
            
          result.add(twoMap);
        }
           
        System.out.println("++++++++++++++++++++++++");
        System.out.println(result);
        System.out.println("++++++++++++++++++++++++");
        //System.out.println(resultX);
    }           

 

  • 写回答

2条回答 默认 最新

  • CSDN专家-sinJack 2021-05-26 21:20
    关注

    你这代码,简直不忍直视啊。

    评论

报告相同问题?

悬赏问题

  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教