北海网站制作公司,住房和城乡建设部执法网站,在上面网站上可以做统计图,手机网站备案密码找回的方法需求#xff1a;
有一个ListMapString.Object,存储了区域的数据#xff0c; 数据是根据用户查询条件进行显示的#xff1b;所以查询的数据是动态的#xff1b;按区域维度统计每个区域出现的次数#xff0c;并且按照次数的大小排序#xff08;升序#…需求
有一个ListMapString.Object,存储了区域的数据 数据是根据用户查询条件进行显示的所以查询的数据是动态的按区域维度统计每个区域出现的次数并且按照次数的大小排序升序区域是动态的有次数则返回没有则不返回
分析 后端给前端返回值不能用对象返回因为数据是动态的key是不固定的 可以使用ListMapString,Object返回Map中key为区域value为统计次数
Demo案例
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;public class day07 {public static void main(String[] args) {ListMapString,Object list new ArrayList();MapString,Object map9 new HashMap();map9.put(region,灞桥区);MapString,Object map10 new HashMap();map10.put(region,灞桥区);MapString,Object map11 new HashMap();map11.put(region,灞桥区);MapString,Object map12 new HashMap();map12.put(region,灞桥区);MapString,Object map13 new HashMap();map13.put(region,灞桥区);MapString,Object map1 new HashMap();map1.put(region,长安区);MapString,Object map2 new HashMap();map2.put(region,雁塔区);MapString,Object map3 new HashMap();map3.put(region,莲湖区);MapString,Object map4 new HashMap();map4.put(region,碑林区);MapString,Object map5 new HashMap();map5.put(region,莲湖区);MapString,Object map6 new HashMap();map6.put(region,未央区);MapString,Object map7 new HashMap();map7.put(region,未央区);MapString,Object map8 new HashMap();map8.put(region,未央区);list.add(map9);list.add(map10);list.add(map11);list.add(map12);list.add(map13);list.add(map1);list.add(map2);list.add(map3);list.add(map4);list.add(map5);list.add(map6);list.add(map7);list.add(map8);ListMapString,Object listResult new ArrayList();ListMapString,Object listFinal new ArrayList();String[] regionlArr {灞桥区,长安区,雁塔区,莲湖区,碑林区,未央区,新城区};int[] arr new int[regionlArr.length];// 数组接收统计每个区域出现的次数;for (int i 0; i list.size(); i) {String re String.valueOf(list.get(i).get(region));for (int j 0; j regionlArr.length; j) {if(re.equals(regionlArr[j])){arr[j] arr[j] 1;}}}// List接收动态获取数据过滤掉次数为0的数据;for (int i 0; i regionlArr.length; i) {MapString,Object map new HashMap();String title regionlArr[i];int value arr[i];if(!String.valueOf(value).equals(0)){map.put(title,title);map.put(value,value);listResult.add(map);}}System.out.println(动态获取匹配后的数据:listResult);int[] valueSort new int[listResult.size()];String[] regionSort new String[listResult.size()];// 获取次数用于排序for (int i 0; i listResult.size(); i) {valueSort[i] Integer.valueOf(String.valueOf(listResult.get(i).get(value)));regionSort[i] String.valueOf(listResult.get(i).get(title));}// 根据次数排序 bubbleSortAsc(valueSort,regionSort); // 根据排序返回数据for (int i 0; i regionSort.length; i) {String ch String.valueOf(regionSort[i]);for (int j 0; j listResult.size(); j) {String value String.valueOf(listResult.get(j).get(title));if(ch.equals(value)){listFinal.add(listResult.get(j));}}}System.out.println(最终输出数据:listFinal); }for (int i 0; i listFinal.size(); i) {listFinal.get(i).put(sortValue,i1);}/** Int类型冒泡排序(升序)**/public static void bubbleSortAsc(int[] arr,String[]arr2) {int temp; // 定义一个临时变量String temp2; // 定义一个临时变量for(int i0;iarr.length-1;i){ // 冒泡趟数for(int j0;jarr.length-i-1;j){if(arr[j1]arr[j]){temp arr[j];arr[j] arr[j1];arr[j1] temp;temp2 arr2[j];arr2[j] arr2[j1];arr2[j1] temp2;}}}} }
测试输出
动态获取匹配后的数据:
[{title灞桥区, value5}, {title长安区, value1}, {title雁塔区, value1}, {title莲湖区, value2}, {title碑林区, value1}, {title未央区, value3}]最终输出数据:
[{sortValue1, title长安区, value1}, {sortValue2, title雁塔区, value1}, {sortValue3, title碑林区, value1}, {sortValue4, title莲湖区, value2}, {sortValue5, title未央区, value3}, {sortValue6, title灞桥区, value5}]
案例二 需求前端根据后端的返回数据画统计图
X轴是动态的有对应区域数据则展示 X轴 区域数据降序排序 代码逻辑
// Service ListMapString,Object getRegionData(HttpServletRequest request,MapString, Object paramMap);// ServiceImpl Overridepublic ListMapString,Object getRegionData(HttpServletRequest request, MapString, Object paramMap) {ListMapString,Object list getCountData(request,paramMap); // 封装统计查询的数据与数据库交互ListMapString,Object listResult new ArrayList();ListMapString,Object listFinal new ArrayList();String[] problemRevealArr {长安区,雁塔区,灞桥区,莲湖区,未央区};int[] arr new int[problemRevealArr.length];for (int i 0; i list.size(); i) {String problemReveal String.valueOf(list.get(i).get(waysOfProblemReveal));for (int j 0; j problemRevealArr.length; j) {if(problemReveal.equals(problemRevealArr[j])){arr[j] arr[j] 1;}}}for (int i 0; i problemRevealArr.length; i) {MapString,Object map new HashMap();String title problemRevealArr[i];int value arr[i];if(!String.valueOf(value).equals(0)){map.put(title,title);map.put(value,value);listResult.add(map);}}int[] valueSort new int[listResult.size()];String[] titleSort new String[listResult.size()];for (int i 0; i listResult.size(); i) {valueSort[i] Integer.valueOf(String.valueOf(listResult.get(i).get(value)));titleSort[i] String.valueOf(listResult.get(i).get(title));}BubbleSort(valueSort,titleSort);for (int i 0; i valueSort.length; i) {String ch String.valueOf(titleSort[i]);for (int j 0; j listResult.size(); j) {String value String.valueOf(listResult.get(j).get(title));if(ch.equals(value)){listFinal.add(listResult.get(j));}}}return listFinal;}/** 冒泡排序(降序)**/public static void BubbleSort(int[] arr,String[]arr2) {int temp;String temp2;for (int i0;iarr.length;i) {for (int j 0; j arr.length; j) {if (arr[i] arr[j]) {temp arr[i];arr[i] arr[j];arr[j] temp;temp2 arr2[i];arr2[i] arr2[j];arr2[j] temp2;}}}}
Postman接口测试