网站维护有文化建设费,网站被抄袭,组件化网站建设,网站提速怎么做需求#xff1a;
1.有一组数据集合#xff0c;数据集合中的数据为动态#xff1b; 举例如下#xff1a; [{province陕西省, city西安市}, {province陕西省, city咸阳市}, {province陕西省, city宝鸡市}, {province陕西省, city延安市}, {province陕西省, city汉中市}, {pr…需求
1.有一组数据集合数据集合中的数据为动态 举例如下 [{province陕西省, city西安市}, {province陕西省, city咸阳市}, {province陕西省, city宝鸡市}, {province陕西省, city延安市}, {province陕西省, city汉中市}, {province四川省, city成都市}, {province四川省, city成都市}, {province四川省, city广元市}, {province四川省, city绵阳市}, {province陕西省, city西安市}, {province陕西省, city西安市}, {province陕西省, city宝鸡市}, {province江苏省, city南京市}, {province江苏省, city南京市}, {province江苏省, city扬州市}, {province河北省, city石家庄市}, {province山东省, city济南市}, {province山东省, city青岛市}, {province山东省, city烟台市}, {province山东省, city潍坊市}] 2.通过计算得出统计的数据省按照大小排序动态展示城市按照大小排序动态展示
最终绘制如下
备注以下看到的函数名称大多是自定义封装的。
当前案例代码中需要用到的知识技能
1.Set集合去重Set hashSet new HashSet(); 2.Set集合转数组String[] provinceArr hashSet.toArray(new String[hashSet.size()]); 3.一维双数组排序BubblSortUtils.bubbleSortDescMultiple(provinceSort,provinceArr); 4.创建集合数组数组里面的元素为set集合Set[] setArr new Set[provinceArr.length]; 5.创建二维数组set集合数组转二维数组String[][] stringArr new String[provinceArr.length][]; 6.二维数组双数组根据第二维度排序BubblSortUtils.bubbleSortDescMultiple2(countArr,stringArr); 7.StringInt数组间的互相转化 8.百分比计算函数封装 9.一维数组和二维数组组合计算一维数组在二维中的中间位置 10.返回数据封装二维数组转一维数组
Demo案例代码逻辑比较复杂需耐心看
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;public class day24 {public static void main(String[] args) {ListMapString,Object list new ArrayList();MapString,Object map1 new HashMap();map1.put(province,陕西省);map1.put(city,西安市);MapString,Object map2 new HashMap();map2.put(province,陕西省);map2.put(city,咸阳市);MapString,Object map3 new HashMap();map3.put(province,陕西省);map3.put(city,宝鸡市);MapString,Object map4 new HashMap();map4.put(province,陕西省);map4.put(city,延安市);MapString,Object map5 new HashMap();map5.put(province,陕西省);map5.put(city,汉中市);MapString,Object map6 new HashMap();map6.put(province,四川省);map6.put(city,成都市);MapString,Object map7 new HashMap();map7.put(province,四川省);map7.put(city,成都市);MapString,Object map8 new HashMap();map8.put(province,四川省);map8.put(city,广元市);MapString,Object map9 new HashMap();map9.put(province,四川省);map9.put(city,绵阳市);MapString,Object map10 new HashMap();map10.put(province,陕西省);map10.put(city,西安市);MapString,Object map11 new HashMap();map11.put(province,陕西省);map11.put(city,西安市);MapString,Object map12 new HashMap();map12.put(province,陕西省);map12.put(city,宝鸡市);MapString,Object map13 new HashMap();map13.put(province,江苏省);map13.put(city,南京市);MapString,Object map14 new HashMap();map14.put(province,江苏省);map14.put(city,南京市);MapString,Object map15 new HashMap();map15.put(province,江苏省);map15.put(city,扬州市);MapString,Object map16 new HashMap();map16.put(province,河北省);map16.put(city,石家庄市);MapString,Object map17 new HashMap();map17.put(province,山东省);map17.put(city,济南市);MapString,Object map18 new HashMap();map18.put(province,山东省);map18.put(city,青岛市);MapString,Object map19 new HashMap();map19.put(province,山东省);map19.put(city,烟台市);MapString,Object map20 new HashMap();map20.put(province,山东省);map20.put(city,潍坊市);list.add(map1);list.add(map2);list.add(map3);list.add(map4);list.add(map5);list.add(map6);list.add(map7);list.add(map8);list.add(map9);list.add(map10);list.add(map11);list.add(map12);list.add(map13);list.add(map14);list.add(map15);list.add(map16);list.add(map17);list.add(map18);list.add(map19);list.add(map20);System.out.println(入参数据:list);// 一获取一级维度// 创建Set集合获取一级维度数据的数据集去重SetString hashSet new HashSet();for (int i 0; i list.size(); i) {String province String.valueOf(list.get(i).get(province));hashSet.add(province);}// 创建一级维度省份数组String[] provinceArr new String[hashSet.size()];// 创建一级维度省份数量数组int[] provinceSort new int[hashSet.size()];// Set转数组if(list.size() 0){provinceArr hashSet.toArray(new String[hashSet.size()]);}// 根据一级维度省份数组计算一级维度省份数量数组for (int i 0; i provinceArr.length; i) {for (int j 0; j list.size(); j) {if(provinceArr[i].equals(String.valueOf(list.get(j).get(province)))){provinceSort[i] provinceSort[i] 1;}}}// 排序一级维度省份数组BubblSortUtils.bubbleSortDescMultiple(provinceSort,provinceArr); // 封装集合测试输出System.out.println(--------------------);ListMapString,Object listFinal new ArrayList();for (int i 0; i provinceArr.length; i) {MapString,Object map new HashMap();map.put(title,provinceArr[i]);map.put(value,provinceSort[i]);listFinal.add(map);}System.out.println(一级维度省份类型和数量:listFinal);// 二获取二级维度// 创建集合数组数组里面的元素为set集合Set[] setArr new Set[provinceArr.length];// 创建二维数组set集合数组转二维数组String[][] stringArr new String[provinceArr.length][];// 集合数组:获取二级维度城市类型数据的数据集去重for (int i 0; i provinceArr.length; i) {SetString hashSet2 new HashSet();// 获取城市数组for (int j 0; j list.size(); j) {if(provinceArr[i].equals(String.valueOf(list.get(j).get(province)))){hashSet2.add(String.valueOf(list.get(j).get(city)));}}setArr[i] hashSet2;}// 二维数组set集合城市数组转二维城市数组for (int i 0; i setArr.length; i) {SetString hashSet2 setArr[i];String[] provinceArr2 new String[hashSet2.size()];if(list.size() 0){provinceArr2 hashSet2.toArray(new String[hashSet2.size()]);}stringArr[i] provinceArr2;}// 创建城市数量二维数组String[][] countArr new String[provinceArr.length][];// 二维数组根据二维城市类型数组计算二维城市数量数组for (int i 0; i stringArr.length; i) {String [] s stringArr[i];String[] temp new String[s.length];for (int j 0; j s.length; j) {for (int k 0; k list.size(); k) {if(s[j].equals(String.valueOf(list.get(k).get(city)))) {if(String.valueOf(temp[j]).equals(null)) {temp[j] 1;}else {temp[j] String.valueOf(Integer.valueOf(temp[j]) 1);}}}}countArr[i] temp;}// 数组排序城市数组和数量数组排序BubblSortUtils.bubbleSortDescMultiple2(countArr,stringArr);// 三百分比二维数组计算百分比String[][] percentageArr new String[provinceArr.length][];int sum list.size();for (int i 0; i countArr.length; i) {String [] s countArr[i];String[] temp new String[s.length];for (int j 0; j s.length; j) {if(list.size() 0) {temp[j] percentageConversion(Integer.valueOf(s[j]),sum);}}percentageArr[i] temp;}System.out.println(------------------:);// 四数据封装返回/** 分析当前得到了四个数组* 一维数组provinceArr* 二维数组stringArr,countArr,percentageArr* * 需要将一维数组provinceArr也转成二维数组并且将数据放在中间位置* */// 将省份添加到每个二维城市数组的末位用临时二维数组stringArrTemp接收String[][] stringArrTemp new String[provinceArr.length][];for (int i 0; i stringArr.length; i) {String[] s stringArr[i];String[] temp new String[s.length1];for (int j 0; j s.length; j) {temp[j] s[j];temp[s.length] provinceArr[i];}stringArrTemp[i] temp;}// 计算一维数组在二维中的中间位置 String[][] provinceNewArr new String[provinceArr.length][];for (int i 0; i stringArrTemp.length; i) {String[] s stringArrTemp[i];String[] temp new String[s.length-1];int num s.length-1;for (int j 0; j s.length-1; j) {if(j num/2) { // 找数组中间位置if(num % 2 0) { // 中间位置为偶数if(j0) { // 首位判断0temp[j-1] s[s.length-1]; // 数据向左偏temp[j] #; // 数据左偏完后下个数据需修正}}else { // 中间位置为奇数temp[j] s[s.length-1];}}else {temp[j] #;}}provinceNewArr[i] temp;}// 返回方式一// 最终得到四个二维数组provinceNewArr,stringArr,countArr,percentageArr// 二维数组封装Map返回MapString,Object mapResult1 new HashMap();mapResult1.put(province, provinceNewArr);mapResult1.put(cityType, stringArr);mapResult1.put(cityCount, countArr);mapResult1.put(cityPercentage, percentageArr);System.out.println(返回方式一最终MAPmapResult1);// 最终测试输出for (int i 0; i stringArr.length; i) {System.out.println(i:stringArr[i]);String[] s1 stringArr[i];String[] s2 countArr[i];String[] s3 percentageArr[i];String[] s4 provinceNewArr[i];for (int j 0; j s1.length; j) {System.out.println(二级维度城市类型和数量:s1[j]--s2[j]--s3[j]--s4[j]);}}// 返回方式二// 前端要求所有的数据把二维数组拼接成一维数组返回ListString listArr1 new ArrayList();ListString listArr2 new ArrayList();ListString listArr3 new ArrayList();ListString listArr4 new ArrayList();for (int i 0; i provinceNewArr.length; i) {String[] s1 provinceNewArr[i];String[] s2 stringArr[i];String[] s3 countArr[i];String[] s4 percentageArr[i];for (int j 0; j s1.length; j) {listArr1.add(s1[j]);listArr2.add(s2[j]);listArr3.add(s3[j]);listArr4.add(s4[j]);}}String[] provinceNewArr2 new String[listArr1.size()];String[] stringArr2 new String[listArr2.size()];String[] countArr2 new String[listArr3.size()];String[] percentageArr2 new String[listArr4.size()];for (int i 0; i listArr1.size(); i) {provinceNewArr2[i] listArr1.get(i);stringArr2[i] listArr2.get(i);countArr2[i] listArr3.get(i);percentageArr2[i] listArr4.get(i);}MapString,Object mapResult2 new HashMap();mapResult2.put(province, provinceNewArr2);mapResult2.put(cityType, stringArr2);mapResult2.put(cityCount, countArr2);mapResult2.put(cityPercentage, percentageArr2);System.out.println(返回方式二最终MAPmapResult2);}public static String percentageConversion(long divisor, long dividend) {String percentage ;// 接受百分比的值double y divisor * 1.0;double z dividend * 1.0;if (y 0 || z 0) {return 0.00%;}double result y / z;DecimalFormat decimalFormat new DecimalFormat(##.00%); // ##.00%percentage decimalFormat.format(result);// ##.00% 使用这种转换方式整数位如果是0 则会被删除 即0.35% 会出现 .35%的情况char c percentage.charAt(0);if (String.valueOf(c).equals(.)) {StringBuffer sb new StringBuffer();sb.append(0).append(percentage);return String.valueOf(sb);}return percentage;}
}
测试输出
入参数据:[{province陕西省, city西安市}, {province陕西省, city咸阳市}, {province陕西省, city宝鸡市}, {province陕西省, city延安市}, {province陕西省, city汉中市}, {province四川省, city成都市}, {province四川省, city成都市}, {province四川省, city广元市}, {province四川省, city绵阳市}, {province陕西省, city西安市}, {province陕西省, city西安市}, {province陕西省, city宝鸡市}, {province江苏省, city南京市}, {province江苏省, city南京市}, {province江苏省, city扬州市}, {province河北省, city石家庄市}, {province山东省, city济南市}, {province山东省, city青岛市}, {province山东省, city烟台市}, {province山东省, city潍坊市}]
--------------------
一级维度省份类型和数量:[{title陕西省, value8}, {title四川省, value4}, {title山东省, value4}, {title江苏省, value3}, {title河北省, value1}]
------------------:
返回方式一最终MAP{cityType[[Ljava.lang.String;506e6d5e, province[[Ljava.lang.String;96532d6, cityCount[[Ljava.lang.String;3796751b, cityPercentage[[Ljava.lang.String;67b64c45}
0:[Ljava.lang.String;4411d970
二级维度城市类型和数量:西安市--3--15.00%--#
二级维度城市类型和数量:宝鸡市--2--10.00%--#
二级维度城市类型和数量:延安市--1--5.00%--陕西省
二级维度城市类型和数量:咸阳市--1--5.00%--#
二级维度城市类型和数量:汉中市--1--5.00%--#
1:[Ljava.lang.String;6442b0a6
二级维度城市类型和数量:成都市--2--10.00%--#
二级维度城市类型和数量:绵阳市--1--5.00%--四川省
二级维度城市类型和数量:广元市--1--5.00%--#
2:[Ljava.lang.String;60f82f98
二级维度城市类型和数量:青岛市--1--5.00%--#
二级维度城市类型和数量:济南市--1--5.00%--山东省
二级维度城市类型和数量:烟台市--1--5.00%--#
二级维度城市类型和数量:潍坊市--1--5.00%--#
3:[Ljava.lang.String;35f983a6
二级维度城市类型和数量:南京市--2--10.00%--江苏省
二级维度城市类型和数量:扬州市--1--5.00%--#
4:[Ljava.lang.String;7f690630
二级维度城市类型和数量:石家庄市--1--5.00%--河北省
返回方式二最终MAP{cityType[Ljava.lang.String;edf4efb, province[Ljava.lang.String;2f7a2457, cityCount[Ljava.lang.String;566776ad, cityPercentage[Ljava.lang.String;6108b2d7}