【Java 动态数据统计图】动态数据统计思路案例(动态,排序,数组)一(112)
需求::
- 有一个List<Map<String.Object>>,存储了某年某月的数据,
数据是根据用户查询条件进行显示的;所以查询的数据是动态的; - 需按月份统计每个年月数据出现的次数,并且按照月份排序;
- 统计周期不超过一年(前端页面控制);
分析::
后端给前端返回值:不能用对象返回,因为数据是动态的,key是不固定的;
可以使用:List<Map<String,Object>>返回;Map中key为年月;value为统计次数;
Demo案例:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class day06 {public static void main(String[] args) {List<Map<String,Object>> list = new ArrayList<>();Map<String,Object> map1 = new HashMap<>();map1.put("month","2023年02月");Map<String,Object> map2 = new HashMap<>();map2.put("month","2023年05月");Map<String,Object> map3 = new HashMap<>();map3.put("month","2023年04月");Map<String,Object> map4 = new HashMap<>();map4.put("month","2023年02月");Map<String,Object> map5 = new HashMap<>();map5.put("month","2023年01月");list.add(map1);list.add(map2);list.add(map3);list.add(map4);list.add(map5);String[] auditMonthArr = {"01","02","03","04","05","06","07","08","09","10","11","12"};int[] count = new int[auditMonthArr.length];String[] yearArr = new String[auditMonthArr.length];for (int i = 0; i < list.size(); i++) {String auditMonth = String.valueOf(list.get(i).get("month")).trim();String auditMonth2 = auditMonth.substring(auditMonth.indexOf("年")+1,auditMonth.indexOf("月"));for (int j = 0; j < auditMonthArr.length; j++) {if(auditMonth2.equals(auditMonthArr[j].trim())){count[j] = count[j] + 1;yearArr[j] = auditMonth;}}}List<Map<String,Object>> listResult = new ArrayList<>();// 按照1月到12月动态展示数据;for (int i = 0; i < auditMonthArr.length; i++) {Map<String,Object> map = new HashMap<>();String title = yearArr[i];int value = count[i];if(!String.valueOf(value).equals("0")){map.put("title",title);map.put("value",value);listResult.add(map);}} for (int i = 0; i < listResult.size(); i++) {listResult.get(i).put("sortValue",i+1);}System.out.println("listResult:"+listResult);}
}
测试输出:
listResult:
listResult:[{sortValue=1, title=2023年01月, value=1}, {sortValue=2, title=2023年02月, value=2}, {sortValue=3, title=2023年04月, value=1}, {sortValue=4, title=2023年05月, value=1}]
案例二:
需求:前端根据后端的返回数据:画趋势图;
- X轴是动态的,有对应月份数据则展示;
- X轴 按照1-12月排序(没月份则跳过);

// Controllerpublic Result getTrendData(HttpServletRequest request,@RequestBody String param) {try {Map<String, Object> paramMap = JsonUtils.readValue(param, Map.class);return Result.success().result(questionListService.getTrendData(request,paramMap));} catch (Exception e) {log.error("QuestionListController getTrendData is error===:" + e.getMessage(), e);return Result.failure("统计失败");}}// Service List<Map<String,Object>> getTrendData(HttpServletRequest request,Map<String, Object> paramMap);// ServiceImpl @Overridepublic List<Map<String,Object>> getTrendData(HttpServletRequest request, Map<String, Object> paramMap) {List<Map<String,Object>> list = getCountData(request,paramMap); // 封装统计查询的数据(与数据库交互)List<Map<String,Object>> listResult = new ArrayList<>();String[] auditMonthArr = {"01","02","03","04","05","06","07","08","09","10","11","12"};int[] monDataArr = new int[auditMonthArr.length];String[] yearArr = new String[auditMonthArr.length];for (int i = 0; i < list.size(); i++) {String auditMonth = String.valueOf(list.get(i).get("auditMonth"));String mon = auditMonth.substring(auditMonth.indexOf("年")+1,auditMonth.lastIndexOf("月"));for (int j = 0; j < auditMonthArr.length; j++) {if(mon.equals(auditMonthArr[j])){monDataArr[j] = monDataArr[j] + 1;yearArr[j] = auditMonth;}}}// 按照1月到12月动态展示数据;for (int i = 0; i < auditMonthArr.length; i++) {Map<String,Object> map = new HashMap<>();String title = yearArr[i];int value = monDataArr[i];// 该判断很重要(仔细品)if(!String.valueOf(value).equals("0")){map.put("title",title);map.put("value",value);listResult.add(map);}}return listResult;}
Postman接口测试:

相关文章:
【Java 动态数据统计图】动态数据统计思路案例(动态,排序,数组)一(112)
需求:: 有一个List<Map<String.Object>>,存储了某年某月的数据, 数据是根据用户查询条件进行显示的;所以查询的数据是动态的;需按月份统计每个年月数据出现的次数,并且按照月份排序࿱…...
kafka踩坑
问题:项目中用到kafka作为消息中间件,因为现在是开发阶段,试了一次没问题之后就没在管,今天又要测试kafka相关功能,发现消息发送者能够正常发送消息,但是消费者怎么也就收不到数据。然后经过各种百度进行了…...
让你专注于工作的电脑桌面日程提醒软件
在现代职场中,上班族们常常在繁忙的工作中会遇到各种各样的事情干扰。比如,当我们专注于完成重要的报告时,却又有同事来询问问题;在准备去会议事项时,手机却突然收到了一系列的短信和通知。这些干扰不仅浪费了我们的时…...
62页智慧产业园区数字化综合解决方案PPT
导读:原文《62页智慧产业园区数字化综合解决方案PPT》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 喜欢文章,您可以关注评论转发本文&#…...
苹果开发者账号注册方法简明指南
注册苹果开发者账号的方法 在2020年以前,注册苹果开发者账号后,就可以生成证书。 但2020年后,因为注册苹果开发者账号需要使用Apple Developer app注册开发者账号,所以需要缴费才能创建ios证书了。 所以新政策出来后,…...
SQL-每日一题【1321. 餐馆营业额变化增长】
题目 表: Customer 你是餐馆的老板,现在你想分析一下可能的营业额变化增长(每天至少有一位顾客)。 计算以 7 天(某日期 该日期前的 6 天)为一个时间段的顾客消费平均值。average_amount 要 保留两位小数。 结果按 …...
PyCharm PyQt5 开发环境搭建
环境 python:3.6.x PyCharm:PyCharm 2019.3.5 (Community Edition) 安装PyQT5 pip install PyQt5 -i https://pypi.douban.com/simplepip install PyQt5-tools -i https://pypi.douban.com/simple配置PyCharm PyQtUIC Program :D:\Pytho…...
2023-08-17 Untiy进阶 C#知识补充8——C#中的日期与时间
文章目录 一、名词概念二、DateTime三、TimeSpan 一、名词概念 (一)格里高利历 格里高利历一般指公元,即公历纪年法。目前我们所说公历,就是格里高利历。 比如 2022 年就是从公元元年开始算起的两千二十二年。 …...
SPSS--如何使用分层分析以及分层分析案例分享
分层分析:将资料按某个或某些需要控制的变量的不同分类进行分层,然后再估计暴露因子与某结局变量之间关系的一种资料分析方法。 分层分析的最重要的用途是评估和控制混杂因子所致的混杂偏倚。通过按混杂因子分层,可使每层内的两个比较组在所控…...
时序数据库influxdb笔记
官方资料 https://docs.influxdata.com/influxdb/v2.7/install/?tLinux https://www.influxdata.com/influxdb/ 安装 1、linux平台下 1)下载 2)解压 3)添加账户( adduser influx) 4)设置目录权限 5…...
8月18日上课内容 Haproxy搭建Web群集
本章结构 课程大纲 Haproxy调度算法 常见的web集群调度器 目前常见的Web集群调度器分为软件和硬件软件 通常使用开源的LVS、Haproxy、Nginx 硬件一般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼、绿盟等 Haproxy应用分析 LVS在企业应用中…...
【高阶数据结构】红黑树详解
文章目录 前言1. 红黑树的概念及性质1.1 红黑树的概念1.2 红黑树的性质1.3 已经学了AVL树,为啥还要学红黑树 2. 红黑树结构的定义3. 插入(仅仅是插入过程)4. 插入结点之后根据情况进行相应调整4.1 cur为红,p为红,g为黑…...
树莓牌4B安装Centos8
准备工作 镜像:https://people.centos.org/pgreco/CentOS-Userland-8-stream-aarch64-RaspberryPI-Minimal-4/ 烧制工具:https://www.raspberrypi.com/software/ 初始化 将上述工具烧制好的SD卡插入树莓派,通电。通过网线将树莓派与电脑连…...
SQL Monitor Crack,PostgreSQL监控的传入复制图表
SQL Monitor Crack,PostgreSQL监控的传入复制图表 现在,您可以在从Estate页面导出的Microsoft Excel报告的摘要标题中看到UTC偏移量。 添加了PostgreSQL监控的传入复制图表。 Microsoft PowerShell API现在支持将使用New-SqlMonitorWindowsHost和New-SqlMonitorin…...
软件测试技术之单元测试—工程师 Style 的测试方法(3)
如何设计单元测试? 单元测试设计方法 单元测试用例,和普通测试用例的设计,没有太多不同,常见的就是等价类划分、边界值分析等。而测试用例的设计其实也是开发者应该掌握的基本技能。 等价类划分 把所有输入划分为若干分类&…...
Ubuntu中安装OpenSSL
文章目录 一、前期准备1.1 压缩包下载1.2 gcc, make等的安装二、安装配置 一、前期准备 1.1 压缩包下载 在安装openssl之前,我们需要下载对应的压缩包 https://www.openssl.org/source/openssl-3.0.1.tar.gz 此压缩包可以选择win上下载后解压再复制到本地虚拟机中…...
CW4-6A-S、CW4-10A-S、CW4-20A-S、CW4-30A-S螺栓式滤波器
CW3L2-3A-S、CW3L2-6A-S、CW3L2-10A-S、CW3L2-20A-S CW3-3A-S、CW3-6A-S、CW3-10A-S、CW3-20A-S、CW3-30A-S CW4EL2-3A-S、CW4EL2-6A-S、CW4EL2-10A-SCW4EL2-20A-S、CW4EL2-30A-S CW4E-3A-S、CW4E-6A-S、CW4E-10A-S、CW4E-20A-S、CW4E-30A-S CW4E-40A-S(001)、CW4E-50A-S(0…...
课程项目设计--项目设计--宿舍管理系统--vue+springboot完成项目--项目从零开始
写在前面: 本文是从项目设计到完成开始写的,本来这个项目基础功能是做完了的,但是之前时间紧张想从头做起了。之前一周写前端后端累死了. 设计是关键,这一篇主讲设计。可能后面会有修改,本人实力有限,学习的也是别人的…...
【Linux】Linux下常用搜索命令及其常用选项小结
0x00 前言 版本信息:Ubuntu 18.04.6 LTS 最后更新日期:2023.8.18 0x01 Linux下常用搜索命令及其常用选项小结 1.find (1)find path -name filename :在指定目录path查找名为filename 文件,文件名可用*匹…...
web APIs-练习五
5秒自动关闭的广告: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
Caliper 负载(Workload)详细解析
Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
CppCon 2015 学习:Time Programming Fundamentals
Civil Time 公历时间 特点: 共 6 个字段: Year(年)Month(月)Day(日)Hour(小时)Minute(分钟)Second(秒) 表示…...
goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...
