Java通过steam实现数据分组
目录
1、添加依赖
2、实体类
3、实现方法
3.1 原始数据
3.2 业务实际使
1、添加依赖
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.3</version>
</dependency>
2、实体类
package com.shucha.deveiface.biz.test;import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.sdy.common.utils.DateUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;import java.util.Date;/*** @author tqf* @Description* @Version 1.0* @since 2022-06-30 14:48*/
@Data
public class EmployData {@ExcelProperty(value = "标题",index = 0)@ApiModelProperty(value = "标题")private String title;@ExcelProperty(value = "供稿处室",index = 1)@ApiModelProperty(value = "供稿处室")private String contributorsOffice;@ExcelProperty(value = "平台管理名称",index = 2)@ApiModelProperty(value = "平台管理名称")private String platformManagementName;@ApiModelProperty(value = "平台管理名称-ID")private Long platFormId;@ExcelProperty(value = "录用栏目",index = 3)@ApiModelProperty(value = "录用栏目")private String employedColumn;@ExcelProperty(value = "录用时间",index = 4)@ApiModelProperty(value = "录用时间")@JsonFormat(pattern = DateUtil.DATETIME_FORMAT)private Date employedTime;@ExcelProperty(value = "加分数",index = 5)@ApiModelProperty(value = "加分数")private Integer score;
}
package com.shucha.deveiface.biz.test;import io.swagger.annotations.ApiModelProperty;
import lombok.Data;import java.util.List;/*** @author tqf* @Description* @Version 1.0* @since 2022-06-30 14:53*/
@Data
public class EmployDataDTO {@ApiModelProperty(value = "标题")private String title;@ApiModelProperty(value = "供稿处室")private String contributorsOffice;@ApiModelProperty(value = "子类列表")private List<EmployData> sonDataList;
}
3、实现方法
package com.shucha.deveiface.biz.test;import com.alibaba.excel.EasyExcel;
import com.alibaba.fastjson.JSON;import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;/*** @author tqf* @Description 多条数据根据相同的某个属性分组* @Version 1.0* @since 2022-07-19 10:18*/
public class ReadeEmployExcelData {private final static String data = "[{\"contributorsOffice\":\"炫迈供稿处\",\"employedColumn\":\"cctv-1\",\"employedTime\":1654790400000,\"platformManagementName\":\"查询平台\",\"score\":201,\"title\":\"导入测试1\"},{\"contributorsOffice\":\"炫迈供稿处\",\"employedColumn\":\"cctv-2\",\"employedTime\":1654876800000,\"platformManagementName\":\"共享平台\",\"score\":100,\"title\":\"导入测试1\"},{\"contributorsOffice\":\"绿箭供稿处\",\"employedColumn\":\"cctv-3\",\"employedTime\":1654963200000,\"platformManagementName\":\"查询平台\",\"score\":8,\"title\":\"导入测试2\"},{\"contributorsOffice\":\"绿箭供稿处\",\"employedColumn\":\"cctv-4\",\"employedTime\":1655049600000,\"platformManagementName\":\"共享平台\",\"score\":10,\"title\":\"导入测试2\"},{\"contributorsOffice\":\"绿箭供稿处\",\"employedColumn\":\"cctv-5\",\"employedTime\":1655136000000,\"platformManagementName\":\"测试平台\",\"score\":300,\"title\":\"导入测试2\"}]";public static void main(String[] args) {getExcelData();}public static void getExcelData(){List<EmployData> list = JSON.parseArray(data, EmployData.class);System.out.println(JSON.toJSONString(list));Map<String, List<EmployData>> mapData = list.stream().collect(Collectors.groupingBy(EmployData::getTitle));// 通过标题分组System.out.println("分组之后的数据结构:" + JSON.toJSONString(mapData));List<EmployDataDTO> dtoList = new ArrayList<>();for (Map.Entry<String, List<EmployData>> entry : mapData.entrySet()) {EmployDataDTO dataDTO = new EmployDataDTO();dataDTO.setTitle(entry.getKey());dataDTO.setContributorsOffice(entry.getValue().get(0).getContributorsOffice());dataDTO.setSonDataList(entry.getValue());dtoList.add(dataDTO);}System.out.println("业务使用结构:" + JSON.toJSONString(dtoList));String jsonString = JSON.toJSONString(dtoList, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue,SerializerFeature.WriteDateUseDateFormat);System.out.println("json格式输出:"+ jsonString);}
}
3.1 原始数据
[{"contributorsOffice": "炫迈供稿处","employedColumn": "cctv-1","employedTime": 1654790400000,"platformManagementName": "查询平台","score": 201,"title": "导入测试1"
}, {"contributorsOffice": "炫迈供稿处","employedColumn": "cctv-2","employedTime": 1654876800000,"platformManagementName": "共享平台","score": 100,"title": "导入测试1"
}, {"contributorsOffice": "绿箭供稿处","employedColumn": "cctv-3","employedTime": 1654963200000,"platformManagementName": "查询平台","score": 8,"title": "导入测试2"
}, {"contributorsOffice": "绿箭供稿处","employedColumn": "cctv-4","employedTime": 1655049600000,"platformManagementName": "共享平台","score": 10,"title": "导入测试2"
}, {"contributorsOffice": "绿箭供稿处","employedColumn": "cctv-5","employedTime": 1655136000000,"platformManagementName": "测试平台","score": 300,"title": "导入测试2"
}]
3.2 业务实际使
[{"contributorsOffice": "绿箭供稿处","sonDataList": [{"contributorsOffice": "绿箭供稿处","employedColumn": "cctv-3","employedTime": 1654963200000,"platformManagementName": "查询平台","score": 8,"title": "导入测试2"}, {"contributorsOffice": "绿箭供稿处","employedColumn": "cctv-4","employedTime": 1655049600000,"platformManagementName": "共享平台","score": 10,"title": "导入测试2"}, {"contributorsOffice": "绿箭供稿处","employedColumn": "cctv-5","employedTime": 1655136000000,"platformManagementName": "测试平台","score": 300,"title": "导入测试2"}],"title": "导入测试2"
}, {"contributorsOffice": "炫迈供稿处","sonDataList": [{"contributorsOffice": "炫迈供稿处","employedColumn": "cctv-1","employedTime": 1654790400000,"platformManagementName": "查询平台","score": 201,"title": "导入测试1"}, {"contributorsOffice": "炫迈供稿处","employedColumn": "cctv-2","employedTime": 1654876800000,"platformManagementName": "共享平台","score": 100,"title": "导入测试1"}],"title": "导入测试1"
}]
Java通过steam实现数据分组相关推荐
- JAVA使用stream对数据分组后求每组的最大值
JAVA stream对数据分组后求每组的最大值 具体需求 对industryCode分组,然后通过取出每组的num的最大值 // 实体类 @Data @AllArgsConstructor publ ...
- Java通过steam实现数据去重、去重获取最新一条
目录 1.添加依赖 2.测试实体类 3.三种方式去 1.添加依赖 <dependency><groupId>com.alibaba</groupId><art ...
- Java通过steam实现数据排序
1.添加依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</ar ...
- Java 嵌入 SPL 轻松实现数据分组
要在 Java 代码中实现类似 SQL 中的 GroupBy 分组聚合运算,是比较繁琐的,通常先要声明数据结构(Java 实体类),然后用 Java 集合进行循环遍历,最后根据分组条件添加到某个子集合 ...
- java spl 是什么_Java 嵌入 SPL 轻松实现数据分组
问题介绍 要在 Java 代码中实现类似 SQL 中的 GroupBy 分组聚合运算,是比较繁琐的,通常先要声明数据结构(Java 实体类),然后用 Java 集合进行循环遍历,最后根据分组条件添加到 ...
- Java中Steam流的用法及使用备忘
文章目录 Java中Steam流的用法及使用备忘 一. 流的常用创建方法 1-1 使用Collection下的 stream() 和 parallelStream() 方法 1-2 使用Arrays ...
- Java,Steam控制器和我
您是否想过是否可以将现有的东西用于新的东西? 我看了一些所谓的"蒸汽控制器"(从现在开始为SC)的镜头,并看着我的游戏手柄. 问我自己是否有可能以类似蒸汽的方式使用它,我找到了一些 ...
- java使用xml存储数据_用存储过程和 JAVA 写报表数据源有什么弊端?
用存储过程和 JAVA 写报表数据源有什么弊端?跟着小编一起来一看一下吧! 我们在报表开发中经常会使用存储过程准备数据,存储过程支持分步计算,可以实现非常复杂的计算逻辑,为报表开发带来便利.所以,报表 ...
- java代码转置sql数据_SQL Server中的数据科学:数据分析和转换–使用SQL透视和转置
java代码转置sql数据 In data science, understanding and preparing data is critical, such as the use of the ...
最新文章
- linux相关面试题总结!
- 【Python】如何用Python实现Word文档拆分
- CodeForces - 1363E Tree Shuffling(树上贪心)
- python计算矩阵方程_python/sympy求解矩阵方程的方法
- 异步非阻塞_细说同步异步、阻塞非阻塞
- 【GOF23设计模式】迭代器模式
- 训练集、验证集和测试集的意义
- 第6章 数组、指针与字符串(二)指针与函数
- 欧盟委员会支持5个开源项目漏洞奖励计划,奖金池20万欧元
- Nginx——安装与虚拟主机配置(域名非80端口问题)
- bigdecimal js 判断等于0_Js BigDecimal实现精确加减乘除运算的方法
- docker已证书方式访问harbor
- visual studio写python_将 Visual Studio 变身为 Python IDE
- 【百度大脑新品体验】车牌识别
- 垃圾短信相关用户细分方案
- 云服务器安装frps实现内网穿透
- 基于STM32+腾讯云IO+微信小程序设计的混凝土智能养护系统
- 智能扭矩系统——SunTorque智能扭矩系统,引领拧紧工艺新变革!
- C# 保存图片到本地文件夹中
- 忍者必须死显示无法连接服务器,忍者必须死为什么不能登录
热门文章
- 抖音流行的人物消失特效怎么实现,用什么软件?
- html css输入框获得焦点、失去焦点效果
- Stack Overflow 2018 机器学习报告;Fuchsia 将支持运行 Linux 应用程序
- 2008瑞星杀毒软件试用板
- [原创内容] 自己编写的Windows7SP1Update离线更新安装汇总-完全开源2.0版[2016.08.26]
- 前端如何快速转Number和Boolean
- 软件工程开发模型以及在软件工程中的作用
- 每日一题_贪心_55_跳跃游戏
- Sentinel初始化之InitFunc实现类加载
- [转]QQ经典签名100句 - [绝对经典]