Java相同id的数据集合,合并数据为一条,并将几个字段内容合并为一个
Java实现,当然也可以数据库实现;
/**
* Created by shaozhiqi on 2019/7/31.
*/
public class TestUnion { @Test
public void test1() {
List<Map<String, Object>> dbList = new ArrayList<>();
Map map1 = new HashMap<>();
map1.put("id", "");
map1.put("assort_no", "");
map1.put("name", "test");
map1.put("leve1", "high");
map1.put("leve1Desc", "高风险");
dbList.add(map1); Map map2 = new HashMap<>();
map2.put("id", "");
map2.put("assort_no", "");
map2.put("name", "test");
map2.put("leve1", "low");
map2.put("leve1Desc", "低风险1");
dbList.add(map2); Map map3 = new HashMap<>();
map3.put("id", "");
map3.put("assort_no", "");
map3.put("name", "test2");
map3.put("leve1", "low");
map3.put("leve1Desc", "低风险2");
dbList.add(map3); Map map4 = new HashMap<>();
map4.put("id", "");
map4.put("assort_no", "");
map4.put("name", "test");
map4.put("leve1", "low");
map4.put("leve1Desc", "低风险3");
dbList.add(map4); Map map5 = new HashMap<>();
map5.put("id", "");
map5.put("assort_no", "");
map5.put("name", "test");
map5.put("leve1", "high");
map5.put("leve1Desc", "高风险5");
dbList.add(map5); for (Map<String, Object> m : dbList) {
List high = new ArrayList<String>();
List low = new ArrayList<String>();
for (Map<String, Object> mm : dbList) {
if (mm.get("assort_no").toString().equals(m.get("assort_no").toString())) {
if ("high".equals(mm.get("leve1").toString())) {
high.add(mm.get("leve1Desc").toString());
} else if ("low".equals(mm.get("leve1").toString())) {
low.add(mm.get("leve1Desc").toString());
}
}
}
m.put("high", high);
m.put("low", low);
} dbList.forEach(m -> {
System.out.println(GSON.toJson(m));
}); Map<String, Object> mapResult=new HashMap<>();
for (Map<String, Object> m : dbList) {
mapResult.put(m.get("assort_no").toString(),m);
}
System.out.println("========================去重后==========================");
mapResult.forEach((k,v) -> {
System.out.println(GSON.toJson(v));
});
} }
结果:
{"high":["高风险","高风险5"],"low":["低风险1","低风险3"],"assort_no":"","name":"test","leve1":"high","id":"","leve1Desc":"高风险"}
{"high":["高风险","高风险5"],"low":["低风险1","低风险3"],"assort_no":"","name":"test","leve1":"low","id":"","leve1Desc":"低风险1"}
{"high":[],"low":["低风险2"],"assort_no":"","name":"test2","leve1":"low","id":"","leve1Desc":"低风险2"}
{"high":["高风险","高风险5"],"low":["低风险1","低风险3"],"assort_no":"","name":"test","leve1":"low","id":"","leve1Desc":"低风险3"}
{"high":["高风险","高风险5"],"low":["低风险1","低风险3"],"assort_no":"","name":"test","leve1":"high","id":"","leve1Desc":"高风险5"}
======================去重后============================
{"high":["高风险","高风险5"],"low":["低风险1","低风险3"],"assort_no":"","name":"test","leve1":"high","id":"","leve1Desc":"高风险5"}
{"high":[],"low":["低风险2"],"assort_no":"","name":"test2","leve1":"low",
Java相同id的数据集合,合并数据为一条,并将几个字段内容合并为一个的更多相关文章
- MongoDB基础篇2:数据库/用户/数据集合的增删改
一.数据库操作 创建并进入数据库: 命令:use DATABASE_NAME 示例:use tms 查看所有数据库: 命令:show dbs 注意: (1)新创建的数据库在show dbs命令 ...
- 【POI】java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上
场景: java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上 今日份代码: 1.先是一个变量,作为文件名 private static final String ...
- 实现java 中 list集合中有几十万条数据,每100条为一组取出
解决"java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!"的问题. 具体解决方案如下: /** * 实现java 中 list集合中有几十万条 ...
- Java基础知识强化之集合框架笔记36:List练习之键盘录入多个数据在控制台输出最大值
1. 键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值 分析: • 创建键盘录入数据对象 • 键盘录入多个数据,我们不知道多少个,所以用集合存储 • 以0结束,这个简单,只要键盘 ...
- Java://Comparator、Comparable的用法(按照要求将set集合的数据进行排序输出):
import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; //comparator. ...
- Java学习:Set接口与HashSet集合存储数据的结构(哈希表)
Set接口 java.util.Set接口 extends Collection接口 Set接口的特点: 不允许存储重复的元素 没有索引,没有带索引的方法,也不能使用普通的for循环遍历 java.u ...
- java的缓冲流及使用Properties集合存取数据(遍历,store,load)
缓冲流 概述 字节缓冲流:BufferedInputStream,BufferedOutputStream 字符缓冲流:BufferedReader,BufferedWriter 缓冲流原理 缓冲区是 ...
- POI Excel 合并数据相同的行
import java.io.Serializable; /** * POI Excel报表导出,列合并实体<br> * * @author WQ * */ public class Po ...
- 【Java EE 学习 69 下】【数据采集系统第一天】【实体类分析和Base类书写】
之前SSH框架已经搭建完毕,现在进行实体类的分析和Base类的书写.Base类是抽象类,专门用于继承. 一.实体类关系分析 既然是数据采集系统,首先调查实体(Survey)是一定要有的,一个调查有多个 ...
随机推荐
- linux无文件执行— fexecve 揭秘
前言 良好的习惯是人生产生复利的有力助手. 继续2020年的flag,至少每周更一篇文章. 无文件执行 之前的文章中,我们讲到了无文件执行的方法以及混淆进程参数的方法,今天我们继续讲解一种linux上 ...
- u库前戏
u库 ORM:对象关系映射 类 >>> 数据库的一张表 对象 >>> 表的一条记录 对象点属性 >>> 记录某一个字段对应的值 ''' 对象就是一 ...
- [Linux系统] CentOS7(RHEL7)重置root用户密码
1.系统启动时,按"e"进入编辑界面 2.编辑内容 将rhgb quiet修改为 init=/bin/sh : 然后按 ctrl+x . 3.修改root密码 mount -o r ...
- 写爬虫爬了3w条职位数据,看看当前招聘形势 | 开源
最近有不少程序员又开始找工作了,为了了解目前技术类各职位的数量.薪资.招聘公司.岗位职责及要求,我爬取了拉勾网北上广深4个城市的招聘数据,共3w条.职位包括:人工智能(AI).大数据.数据分析.后端( ...
- Android LinearLayout线性布局详解
为了更好地管理Android应用的用户界面里的各组件,Android提供了布局管理器.通过使用布局管理器,Android应用图形用户界面具有良好的平台无关性.推荐使用布局管理器来管理组件的分布.大小, ...
- 类加载机制之ClassLoader
1,类加载 每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑,这些”.java”文件经过Java编译器编译成拓展名为”.class”的文件,”.class”文件中保存着Java代码经转换 ...
- Gold30Mins
- [noip2016]组合数问题<dp+杨辉三角>
题目链接:https://vijos.org/p/2006 当时在考场上只想到了暴力的做法,现在自己看了以后还是没思路,最后看大佬说的杨辉三角才懂这题... 我自己总结了一下,我不能反应出杨辉三角的递 ...
- [vijos1144]小胖守皇宫<树形dp>
题目链接:https://vijos.org/p/1144 woc我竟然A了,这道经典的树形dp或者说是树形dp的入门题我终于过了,虽然之前做过一些树形dp的题,但是这题开始还是一脸懵逼,dp方程如何 ...
- .Net Core 跨平台开发实战-服务器缓存:本地缓存、分布式缓存、自定义缓存
.Net Core 跨平台开发实战-服务器缓存:本地缓存.分布式缓存.自定义缓存 1.概述 系统性能优化的第一步就是使用缓存!什么是缓存?缓存是一种效果,就是把数据结果存在某个介质中,下次直接重用.根 ...