网站建设的方案书,贵阳网站seo公司,久久诗词网,wordpress主题tag标签页面代码需求#xff1a;#xff1a;前端根据后端的返回数据#xff1a;画统计图#xff1b;
1.动态获取地域数据以及数据中的平均值#xff0c;按照平均值降序排序#xff1b; 说明#xff1a; X轴是动态的#xff0c;有对应区域数据则展示#xff1b; X轴 区域数据降序排序…需求前端根据后端的返回数据画统计图
1.动态获取地域数据以及数据中的平均值按照平均值降序排序 说明 X轴是动态的有对应区域数据则展示 X轴 区域数据降序排序
代码 Overridepublic ListMapString,Object getTimeData(HttpServletRequest request, MapString, Object paramMap) {ListMapString,Object list getCountData(request,paramMap);list list.stream().filter(e - (e.get(status).equals(关闭))).collect(Collectors.toList());ListMapString,Object resultList new ArrayList();String[] reginArr {安徽,安顺,北京,北美,长春,长沙,成都,承德,大连,武汉};int[] count new int[reginArr.length];double[] processTimeCount new double[reginArr.length];double[] processTimeAvg new double[reginArr.length];for (int i 0; i list.size(); i) {String processTime String.valueOf(list.get(i).get(processTime));String region String.valueOf(list.get(i).get(region)).trim();if(!processTime.contains(.)){list.get(i).put(processTime,0.0);}String processTime2 String.valueOf(list.get(i).get(processTime));for (int j 0; j reginArr.length; j) {if(region.equals(reginArr[j].trim())){count[j] count[j] 1; // 统计次数processTimeCount[j] processTimeCount[j] Double.parseDouble(processTime2); // 统计合并值}}}// 计算平均值for (int i 0; i processTimeCount.length; i) {processTimeAvg[i] processTimeCount[i]/count[i];// double类型的数据当分母的数值趋近0的时候返回来的数值就是一个NAN:if(Double.isNaN(processTimeAvg[i])){processTimeAvg[i] 0.0;}}// 将数据封装集合for (int i 0; i reginArr.length; i) {MapString,Object mapResult new HashMap();String avg String.valueOf(processTimeAvg[i]);mapResult.put(title,reginArr[i]);mapResult.put(value,avg.substring(0,avg.indexOf(.) 2));resultList.add(mapResult);}// 数据过滤ListMapString,Object finalList new ArrayList();// 过滤不需要的数据for (int i 0; i resultList.size(); i) {String value String.valueOf(resultList.get(i).get(value));if(!value.equals(0.0)){finalList.add(resultList.get(i));}}// 排序后最终输出集合ListMapString,Object finalList2 new ArrayList();Double[] valueSort new Double[finalList.size()];String[] titleSort new String[finalList.size()];// 用数组存储需要排序的元素for (int i 0; i finalList.size(); i) {valueSort[i] Double.parseDouble(String.valueOf(finalList.get(i).get(value)));titleSort[i] String.valueOf(finalList.get(i).get(title));}// 多个数组排序BubblSortUtils.bubbleSortDescMultipleDouble(valueSort,titleSort);// 根据排序结果封装Listfor (int i 0; i valueSort.length; i) {String ch String.valueOf(titleSort[i]);for (int j 0; j finalList.size(); j) {String value String.valueOf(finalList.get(j).get(title));if(ch.equals(value)){finalList2.add(finalList.get(j));}}}// 添加排序字段sortValuefor (int i 0; i finalList2.size(); i) {finalList2.get(i).put(sortValue,i1);}return finalList2;}Postman接口测试
总结 代码中有一个地域的数组reginArr 如果地域字典新增还需维护这个字典所以还是不够灵活参考【Java 动态数据统计图】动态数据统计思路Demo动态排序三115和【Java代码优化】for循环多if条件分支代码优化一110中的优化方案二有更灵活计算逻辑