项目用用到三层for循环 比较复杂 同事给说了好方法:
String rockCode = request.getParameter("rockCode"); UControlBoard uControlBoard = uControlBoardService.getUcontralBoardThrowCabinetCode(rockCode); String modelId = uControlBoard.getModelId(); LinkedHashMap<String,String> testMap =new LinkedHashMap<>(); List<U_Infor> u_inforList = new ArrayList<>(); if(modelId != null){ u_inforList = UweiCommandService.getUWListByModelId(modelId); }
Map<Integer,HashMap<String,Object>> typedUInfor = new HashMap<Integer,HashMap<String,Object>>(); for(U_Infor u_infor : u_inforList){ String snCode = u_infor.asset_number.split("@")[0]; Integer used_count = u_infor.used_count; Integer address = u_infor.address; for(int i = 0 ;i<used_count;i++){ HashMap<String,Object> innObject = new HashMap<String,Object>(); innObject.put("snCode",snCode); innObject.put("address",address); typedUInfor.put(address+i,innObject); } }
for(int i = 1;i <= uControlBoard.getuNum(); i++){ HashMap<String,Object> getMap = typedUInfor.get(i); if(getMap != null){ testMap.put(Integer.toString(i),getMap.get("snCode").toString()); }else{ testMap.put(Integer.toString(i),""); } }
这种思路挺好,在此记录一下