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. Sqli-labs 搭建SQL注入平台

    sqli-labs是一款学习sql注入的开源平台,共有75种不同类型的注入. 搭建步骤: 1.在Windows系统中安装WAMP 下载地址:https://pan.baidu.com/s/1HY0hF ...

  2. [模拟] Codeforces - 1191C - Tokitsukaze and Discard Items

    Tokitsukaze and Discard Items time limit per test 1 second memory limit per test 256 megabytes input ...

  3. Java的集合框架综述

    集合 用于存储和管理数据的实体被称为数据结构(data structure).数据结构可用于实现具有不同特性的集合对象,这里所说的集合对象可以看作一类用于存储数据的特殊对象. 集合内部可以采用某种数据 ...

  4. Python第三章-输入输出和运算符

    输入输出和运算符 一.输入和输出 1.1 输出 `print()`函数用来向终端输出数据(其实也可以向文件输出数据,后面再讲) 可以传递多个参数,则输出的时候 python 会把多个参数的值用空格隔开 ...

  5. PyTorch专栏开篇

    目前研究人员正在使用的深度学习框架不尽相同,有 TensorFlow .PyTorch.Keras等.这些深度学习框架被应用于计算机视觉.语音识别.自然语言处理与生物信息学等领域,并获取了极好的效果. ...

  6. Nature重磅:华裔科学家成功解码脑电波,AI直接从大脑中合成语音

    [导读]Nature发表华裔作者论文:通过解码大脑活动提升语音的清晰度,使用深度学习方法直接从大脑信号中产生口语句子,达到150个单词,接近正常人水平. 大脑活动能够解码成语音了. 说话似乎是一项毫不 ...

  7. Secret Milking Machine POJ - 2455 网络流(Dinic算法---广搜判断+深搜增广)+时间优化+二分

    题意: 第一行输入N M C ,表示从1到N有M条无向边,现在要从1走到N 走C次完全不同的路径,求最长边的最小值.下面M行是从a点到b点的距离. 建图: 题上说从两点之间可以有多条边,问的是从1~N ...

  8. jmeter4.0介绍一

    apache JMeter™应用程序是开放源码软件, 一个100% 纯 Java 应用程序, 旨在加载测试功能行为和测量性能.它最初设计用于测试 Web 应用程序, 但后来扩展到其他测试功能. Jme ...

  9. Java 对象容器

    一.ArrayList 容器 1.记事本 package booknote; import java.util.ArrayList; public class NoteBook { private A ...

  10. 【cs224w】Lecture 3 - Motif, Graphlet 及 结构性角色

    目录 Network Motifs Configuration Model Graphlets How to Find Motifs and Graphlets Structural Roles 转自 ...