目录

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实现数据分组相关推荐

  1. JAVA使用stream对数据分组后求每组的最大值

    JAVA stream对数据分组后求每组的最大值 具体需求 对industryCode分组,然后通过取出每组的num的最大值 // 实体类 @Data @AllArgsConstructor publ ...

  2. Java通过steam实现数据去重、去重获取最新一条

    目录 1.添加依赖 2.测试实体类 3.三种方式去 1.添加依赖 <dependency><groupId>com.alibaba</groupId><art ...

  3. Java通过steam实现数据排序

    1.添加依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</ar ...

  4. Java 嵌入 SPL 轻松实现数据分组

    要在 Java 代码中实现类似 SQL 中的 GroupBy 分组聚合运算,是比较繁琐的,通常先要声明数据结构(Java 实体类),然后用 Java 集合进行循环遍历,最后根据分组条件添加到某个子集合 ...

  5. java spl 是什么_Java 嵌入 SPL 轻松实现数据分组

    问题介绍 要在 Java 代码中实现类似 SQL 中的 GroupBy 分组聚合运算,是比较繁琐的,通常先要声明数据结构(Java 实体类),然后用 Java 集合进行循环遍历,最后根据分组条件添加到 ...

  6. Java中Steam流的用法及使用备忘

    文章目录 Java中Steam流的用法及使用备忘 一. 流的常用创建方法 1-1 使用Collection下的 stream() 和 parallelStream() 方法 1-2 使用Arrays ...

  7. Java,Steam控制器和我

    您是否想过是否可以将现有的东西用于新的东西? 我看了一些所谓的"蒸汽控制器"(从现在开始为SC)的镜头,并看着我的游戏手柄. 问我自己是否有可能以类似蒸汽的方式使用它,我找到了一些 ...

  8. java使用xml存储数据_用存储过程和 JAVA 写报表数据源有什么弊端?

    用存储过程和 JAVA 写报表数据源有什么弊端?跟着小编一起来一看一下吧! 我们在报表开发中经常会使用存储过程准备数据,存储过程支持分步计算,可以实现非常复杂的计算逻辑,为报表开发带来便利.所以,报表 ...

  9. java代码转置sql数据_SQL Server中的数据科学:数据分析和转换–使用SQL透视和转置

    java代码转置sql数据 In data science, understanding and preparing data is critical, such as the use of the ...

最新文章

  1. linux相关面试题总结!
  2. 【Python】如何用Python实现Word文档拆分
  3. CodeForces - 1363E Tree Shuffling(树上贪心)
  4. python计算矩阵方程_python/sympy求解矩阵方程的方法
  5. 异步非阻塞_细说同步异步、阻塞非阻塞
  6. 【GOF23设计模式】迭代器模式
  7. 训练集、验证集和测试集的意义
  8. 第6章 数组、指针与字符串(二)指针与函数
  9. 欧盟委员会支持5个开源项目漏洞奖励计划,奖金池20万欧元
  10. Nginx——安装与虚拟主机配置(域名非80端口问题)
  11. bigdecimal js 判断等于0_Js BigDecimal实现精确加减乘除运算的方法
  12. docker已证书方式访问harbor
  13. visual studio写python_将 Visual Studio 变身为 Python IDE
  14. 【百度大脑新品体验】车牌识别
  15. 垃圾短信相关用户细分方案
  16. 云服务器安装frps实现内网穿透
  17. 基于STM32+腾讯云IO+微信小程序设计的混凝土智能养护系统
  18. 智能扭矩系统——SunTorque智能扭矩系统,引领拧紧工艺新变革!
  19. C# 保存图片到本地文件夹中
  20. 忍者必须死显示无法连接服务器,忍者必须死为什么不能登录

热门文章

  1. 抖音流行的人物消失特效怎么实现,用什么软件?
  2. html css输入框获得焦点、失去焦点效果
  3. Stack Overflow 2018 机器学习报告;Fuchsia 将支持运行 Linux 应用程序
  4. 2008瑞星杀毒软件试用板
  5. [原创内容] 自己编写的Windows7SP1Update离线更新安装汇总-完全开源2.0版[2016.08.26]
  6. 前端如何快速转Number和Boolean
  7. 软件工程开发模型以及在软件工程中的作用
  8. 每日一题_贪心_55_跳跃游戏
  9. Sentinel初始化之InitFunc实现类加载
  10. [转]QQ经典签名100句 - [绝对经典]