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)是一定要有的,一个调查有多个 ...
随机推荐
- 部署prometheus监控kubernetes集群并存储到ceph
简介 Prometheus 最初是 SoundCloud 构建的开源系统监控和报警工具,是一个独立的开源项目,于2016年加入了 CNCF 基金会,作为继 Kubernetes 之后的第二个托管项目. ...
- Linux你不知道的ping操作
1.指定ping的次数 -c 选项 ping -c 3 www.baidu.com 2.只返回结果 -q 选项 ping -q -c 3 www.baidu.com 3.指定数据包的大小 -s ...
- C++技法杂记
C++ 技法杂技杂记 1. 枚举 1.1 枚举继承(Enum Inheritance) struct Enum{ enum{ One = 1, Two, Last }; }; struct EnumD ...
- div 3 frog jump
There is a frog staying to the left of the string s=s1s2…sn consisting of n characters (to be more p ...
- 多线程之旅(Thread)
在上篇文章中我们已经知道了多线程是什么了,那么它到底可以干嘛呢?这里特别声明一个前面的委托没看的同学可以到上上上篇博文查看,因为多线程要经常使用到委托.源码 一.异步.同步 1.同步(在计算的理解总是 ...
- 一个完整的机器学习项目在Python中的演练(二)
大家往往会选择一本数据科学相关书籍或者完成一门在线课程来学习和掌握机器学习.但是,实际情况往往是,学完之后反而并不清楚这些技术怎样才能被用在实际的项目流程中.就像你的脑海中已经有了一块块"拼 ...
- java 初学者 第一阶段作业编程总结及心得体会
0.前言 第一阶段java作业分为3次. 第一次作业是简单得一些语法和一些简单得逻辑思维,主要内容有求三角形是什么三角形的,还有就是求坐标点所在范围的,也涉及到了数字和字母的转换,总之相相当于是给ja ...
- nosql Redis命令操作详解
Redis命令操作详解 一.key pattern 查询相应的key (1)redis允许模糊查询key 有3个通配符 *.?.[] (2)randomkey:返回随机key (3)type key: ...
- Python——matplotlib基础绘图函数示例
1. 2.饼图 (1) import matplotlib.pyplot as plt labels='frogs','hogs','dogs','logs'% sizes=[15,30,45,10] ...
- Js,JQuery不同方式绑定的同一事件可以同时触发,互不干扰
比如,onclick绑定,然后jquery.on("click", function(){})绑定等