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的数据集合,合并数据为一条,并将几个字段内容合并为一个的更多相关文章

  1. MongoDB基础篇2:数据库/用户/数据集合的增删改

    一.数据库操作 创建并进入数据库: 命令:use DATABASE_NAME 示例:use tms   查看所有数据库: 命令:show dbs   注意: (1)新创建的数据库在show dbs命令 ...

  2. 【POI】java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上

    场景: java服务生成List数据集合,后台服务生成xlsx临时文件,并将临时文件上传到腾讯云上 今日份代码: 1.先是一个变量,作为文件名 private static final String ...

  3. 实现java 中 list集合中有几十万条数据,每100条为一组取出

    解决"java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!"的问题. 具体解决方案如下: /** * 实现java 中 list集合中有几十万条 ...

  4. Java基础知识强化之集合框架笔记36:List练习之键盘录入多个数据在控制台输出最大值

    1. 键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值 分析: •  创建键盘录入数据对象 •  键盘录入多个数据,我们不知道多少个,所以用集合存储 •  以0结束,这个简单,只要键盘 ...

  5. Java://Comparator、Comparable的用法(按照要求将set集合的数据进行排序输出):

    import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; //comparator. ...

  6. Java学习:Set接口与HashSet集合存储数据的结构(哈希表)

    Set接口 java.util.Set接口 extends Collection接口 Set接口的特点: 不允许存储重复的元素 没有索引,没有带索引的方法,也不能使用普通的for循环遍历 java.u ...

  7. java的缓冲流及使用Properties集合存取数据(遍历,store,load)

    缓冲流 概述 字节缓冲流:BufferedInputStream,BufferedOutputStream 字符缓冲流:BufferedReader,BufferedWriter 缓冲流原理 缓冲区是 ...

  8. POI Excel 合并数据相同的行

    import java.io.Serializable; /** * POI Excel报表导出,列合并实体<br> * * @author WQ * */ public class Po ...

  9. 【Java EE 学习 69 下】【数据采集系统第一天】【实体类分析和Base类书写】

    之前SSH框架已经搭建完毕,现在进行实体类的分析和Base类的书写.Base类是抽象类,专门用于继承. 一.实体类关系分析 既然是数据采集系统,首先调查实体(Survey)是一定要有的,一个调查有多个 ...

随机推荐

  1. Swift5.2 新特性

    Print 函数传参新格式 let param = "参数" print(#"这是一个\#(param) xxxxx"#) 允许在模块中定义和标准库中名称一样的 ...

  2. swagger 报 i.s.m.parameters.AbstractSerializableParameter - Illegal DefaultValue null for parameter type integer java.lang.NumberFormatException: For input string

    解决 方法 添加这两个依赖....别问我有啥子用....我也不知道..能解决问题 <dependency> <groupId>io.swagger</groupId> ...

  3. Mysql5.7及以上版本 ONLY_FULL_GROUP_BY报错

    近期在开发过程中,因为项目开发环境连接的mysql数据库是阿里云的数据库,而阿里云的数据库版本是5.6的.而测试环境的mysql是自己安装的5.7.因此在开发过程中有小伙伴不注意写了有关group b ...

  4. 全国职业技能大赛信息安全管理与评估-第三阶段-弱口令自动爆破+读取Flag脚本

    自动爆破SSH弱口令+读取Flag #coding=utf-8 import paramiko sshc = paramiko.SSHClient() sshc.set_missing_host_ke ...

  5. 扫描工具-Arachni

    ./arachni_console          #进入命令行模式 ./arachni_web               #启用web服务,进入web操作模式 [属于web 应用] http:/ ...

  6. PAT-B 1005. 继续(3n+1)猜想 (25) c++

    1005. 继续(3n+1)猜想 (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 卡拉兹(Callatz ...

  7. 十分钟一起学会ResNet残差网络

    作者 | 荔枝boy 目录 深层次网络训练瓶颈:梯度消失,网络退化 ResNet简介 ResNet解决深度网络瓶颈的魔力 ResNet使用的小技巧 总结 深层次网络训练瓶颈:梯度消失,网络退化 深度卷 ...

  8. 【NLP面试QA】基本策略

    目录 防止过拟合的方法 什么是梯度消失和梯度爆炸?如何解决? 在深度学习中,网络层数增多会伴随哪些问题,怎么解决? 关于模型参数 模型参数初始化的方法 模型参数初始化为 0.过大.过小会怎样? 为什么 ...

  9. ThreadAbortException是可以传递的

    今天在写线程Aborted代码时,发现嵌套的try catch中的ThreadAbortException错误是可以从内部传递到外部的,想想这也是必然的,在内部该线程已经中断了,外部必然是中断了,再仔 ...

  10. vue中的生命周期事件和钩子函数

    vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染->更新->渲染.卸载等一系列过程,我们称这是vue的生命周期.通俗的将就是vue实例从创建到销毁的 ...