【Java 动态数据统计图】动态数据统计思路案例(动态,排序,动态数组(重点推荐))七(129)

需求:前端根据后端的返回数据:画统计图;

说明:

1.X轴为地域,Y轴为地域出现的次数;

  1. 动态展示(有地域展示,没有不展示,且高低排序)

Demo案例

java 复制代码
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class day22 {
	public static void main(String[] args) {
		
		List<Map<String,Object>> list = new ArrayList<>();
		Map<String,Object> map1 = new HashMap<>();
		map1.put("region","西安");
		map1.put("num",1.0);
		Map<String,Object> map2 = new HashMap<>();
		map2.put("region","上海");
		map2.put("num",2.0);
		Map<String,Object> map3 = new HashMap<>();
		map3.put("region","北京");
		map3.put("num",3.0);
		Map<String,Object> map4 = new HashMap<>();
		map4.put("region","西安");
		map4.put("num",1.5);
		Map<String,Object> map5 = new HashMap<>();
		map5.put("region","西安");
		map5.put("num",2.5);
		Map<String,Object> map6 = new HashMap<>();
		map6.put("region","北京");
		map6.put("num",4.0);
		Map<String,Object> map7 = new HashMap<>();
		map7.put("region","成都");
		map7.put("num",1.0);
		Map<String,Object> map8 = new HashMap<>();
		map8.put("region","上海");
		map8.put("num",2.0);
		Map<String,Object> map9 = new HashMap<>();
		map9.put("region","上海");
		map9.put("num",2.5);
		Map<String,Object> map10 = new HashMap<>();
		map10.put("region","上海");
		map10.put("num",2.0);
		Map<String,Object> map11 = new HashMap<>();
		map11.put("region","长沙");
		map11.put("num",2.0);
		Map<String,Object> map12 = new HashMap<>();
		map12.put("region","苏州");
		map12.put("num",2.0);
		Map<String,Object> map13 = new HashMap<>();
		map13.put("region","江西");
		map13.put("num",2.0);
		Map<String,Object> map14 = new HashMap<>();
		map14.put("region","长沙");
		map14.put("num",2.0);
		Map<String,Object> map15 = new HashMap<>();
		map15.put("region","苏州");
		map15.put("num",2.0);
		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);
		
		// Set:获取数组中的所有数据:去重
		Set<String> hashSet = new HashSet<>();
		
        for (int i = 0; i < list.size(); i++) {
            String region = String.valueOf(list.get(i).get("region"));
            hashSet.add(region);
        }
        
        String[] regionArr = new String[hashSet.size()];
        int[] valueSort = new int[hashSet.size()];
        // Set转数组
        if(list.size() > 0){
        	regionArr = hashSet.toArray(new String[hashSet.size()]);
        }
        // 根据数组计算每个元素的数量;
        for (int i = 0; i < regionArr.length; i++) {
            for (int j = 0; j < list.size(); j++) {
            	String s = String.valueOf(list.get(j).get("region"));
                if(regionArr[i].equals(s)){
                    valueSort[i] = valueSort[i] + 1;
                }
            }
        }
        // 排序;
        BubblSortUtils.bubbleSortDescMultiple(valueSort,regionArr);
        List<Map<String,Object>> listFinal= new ArrayList<>();
        for (int i = 0; i < regionArr.length; i++) {
            Map<String,Object> map = new HashMap<>();
            map.put("title",regionArr[i]);
            map.put("value",valueSort[i]);
            listFinal.add(map);
        }
        System.out.println("listFinal:"+listFinal);
		
	}
}

测试输出

java 复制代码
listFinal:[{title=上海, value=4}, {title=西安, value=3}, {title=苏州, value=2}, {title=北京, value=2}, {title=长沙, value=2}, {title=江西, value=1}, {title=成都, value=1}]

案例二

java 复制代码
	public List<Map<String,Object>> getRevealData(HttpServletRequest request, Map<String, Object> paramMap) {
        List<Map<String,Object>> list = getCountData(request,paramMap);
        if(list.size() == 0){
            return null;
        }
        // 获取数据的类型;去重
        Set<String> hashSet = new HashSet<>();
        for (int i = 0; i < list.size(); i++) {
            String waysOfProblemReveal = String.valueOf(list.get(i).get("waysOfProblemReveal"));
            hashSet.add(waysOfProblemReveal);
        }
        String[] waysOfProblemArr = new String[hashSet.size()];
        int[] valueSort = new int[hashSet.size()];
        if(list.size() > 0){
            waysOfProblemArr = hashSet.toArray(new String[hashSet.size()]);
        }
        // 根据数组,计算每个元素的个数;
        for (int i = 0; i < waysOfProblemArr.length; i++) {
            for (int j = 0; j < list.size(); j++) {
                String s = String.valueOf(list.get(j).get("waysOfProblemReveal"));
                if(waysOfProblemArr[i].equals(s)){
                    valueSort[i] = valueSort[i] + 1;
                }
            }
        }
        // 数组排序;
        BubblSortUtils.bubbleSortDescMultiple(valueSort,waysOfProblemArr);
        List<Map<String,Object>> listFinal= new ArrayList<>();
        for (int i = 0; i < waysOfProblemArr.length; i++) {
            Map<String,Object> map = new HashMap<>();
            map.put("title",waysOfProblemArr[i]);
            map.put("value",valueSort[i]);
            map.put("sortValue",waysOfProblemArr.length-i);
            listFinal.add(map);
        }
        return listFinal;
    }

postman接口测试

相关推荐
lee_curry7 小时前
第四章 jvm中的垃圾回收器
java·jvm·垃圾收集器
九转成圣8 小时前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
直奔標竿8 小时前
Java开发者AI转型第二十七课!Spring AI 个人知识库实战(六)——全栈闭环收官,解锁前端流式渲染终极技巧
java·开发语言·前端·人工智能·后端·spring
金銀銅鐵9 小时前
[java] 编译之后的记录类(Record Classes)长什么样子(上)
java·jvm·后端
野生技术架构师10 小时前
金三银四面试总结篇,汇总 Java 面试突击班后的面试小册
java·面试·职场和发展
小袁拒绝摆烂11 小时前
多表关联大平层转JSON树形结构
java·json
ja哇12 小时前
大厂面试高频八股
java·面试·职场和发展
yoyo_zzm12 小时前
Laravel6.x新特性全解析
java·spring boot·后端
Nick_zcy12 小时前
小说在线阅读网站和小说管理系统 · 功能全解析
java·后端·python·springboot·ruoyi