• 简介 (Introduction):

    • 背景
      需要对数据进行拼接,拼接的数据是存在两个不同的表中,但是,拼接后要作为一个对象显示,但是,这样的对象又是多个的.
    • 结构图
      数据库模型

      id name
      10086 zhangsan
      10087 lisi
id work
10086 teacher
10087 programmer

需要结果

id name work
10086 zhangsan

teacher

10087 lisi

programmer

  • 核心
    因为是在不同的数据库里,所以不能使用sql联合查询,所以只能采用List封装数据和另一个List封装数据拼接成一个结果集

  • 快速上手(Getting Started)

    1.创建测试数据

     1 private static List<SameOr> getDemo1() {
    2
    3
    4 List<SameOr> sameOrList = new ArrayList<>();
    5
    6 SameOr sameOr = new SameOr();
    7 sameOr.setNumber("10086");
    8 sameOr.setName("zhangsan");
    9
    10 SameOr sameOr2 = new SameOr();
    11 sameOr2.setNumber("10087");
    12 sameOr2.setName("lisi");
    13
    14 sameOrList.add(sameOr);
    15 sameOrList.add(sameOr2);
    16
    17 return sameOrList;
    18
    19 }

     1 private static List<SameOr> getDemo2() {
    2
    3
    4 List<SameOr> sameOrList = new ArrayList<>();
    5
    6 SameOr sameOr = new SameOr();
    7 sameOr.setNumber("10086");
    8
    9 sameOr.setSex("0");
    10 sameOr.setWork("programmer");
    11
    12 SameOr sameOr2 = new SameOr();
    13 sameOr2.setNumber("10087");
    14 sameOr2.setSex("1");
    15 sameOr2.setWork("programmer");
    16
    17
    18 sameOrList.add(sameOr);
    19 sameOrList.add(sameOr2);
    20
    21 return sameOrList;
    22
    23 }

    2.创建核心方法
    由于业务跑在线程里,所以,不建议(基本不适用)双重for循环,所以,这里采用Map方式

     1 private static void getCombineDemo2(List<SameOr> demo1, List<SameOr> demo2) {
    2 HashMap<String, SameOr> map = new HashMap<>();
    3
    4 for (SameOr sameOr : demo1) {
    5 map.put(sameOr.getNumber(), sameOr);
    6 }
    7
    8
    9 for (SameOr sameOr : demo2) {
    10 String sameOrNumber = sameOr.getNumber();
    11 SameOr sameOr1 = map.get(sameOrNumber);
    12 if (sameOr1 == null) {
    13 continue;
    14 }
    15
    16 if (StringUtils.isBlank(sameOr.getName())) {
    17 sameOr.setName(sameOr1.getName());
    18 }
    19
    20 if (StringUtils.isBlank(sameOr.getSex())) {
    21 sameOr.setSex(sameOr1.getSex());
    22 }
    23
    24 if (StringUtils.isBlank(sameOr.getWork())) {
    25 sameOr.setWork(sameOr1.getWork());
    26 }
    27
    28
    29 }
    30
    31 }

    3、测试结果

     1         //两个数组合并成一个
    2 List<SameOr> demo1 = getDemo1();
    3 List<SameOr> demo2 = getDemo2();
    4
    5
    6 System.out.println("创建第一个数据:"+new Gson().toJson(demo1));
    7
    8 System.out.println("创建第二个数据:"+new Gson().toJson(demo2));
    9
    10 getCombineDemo2(demo1, demo2);
    11
    12 System.out.println("结果集:"+new Gson().toJson(demo2));

    4、结果展示
    创建第一个数据:

     1 [
    2 {
    3 "number":"10086",
    4 "name":"zhangsan"
    5 },
    6 {
    7 "number":"10087",
    8 "name":"lisi"
    9 }
    10 ]

    创建第二个数据:

     1 [
    2 {
    3 "number":"10086",
    4 "work":"programmer",
    5 "sex":"0"
    6 },
    7 {
    8 "number":"10087",
    9 "work":"programmer",
    10 "sex":"1"
    11 }
    12 ]

    结果集:

     1 [
    2 {
    3 "number":"10086",
    4 "name":"zhangsan",
    5 "work":"programmer",
    6 "sex":"0"
    7 },
    8 {
    9 "number":"10087",
    10 "name":"lisi",
    11 "work":"programmer",
    12 "sex":"1"
    13 }
    14 ]
  • 环境设置 (Prerequisite):

    • 环境
      JDK1.8
    • 配置
      IDEA 2019
    • 存在问题
      暂无

  • 进阶篇 (Advanced):

研究中 ......

两个List合并,List集合中的对象根据某个相同的属性,合并另外属性的更多相关文章

  1. List集合中的对象按照某个字段去重实现

    package com.liying.banana.user; import java.util.ArrayList; import java.util.Comparator; import java ...

  2. Java中删除第一个集合中以某某开头的元素,删除第二个集合中以某某结尾的元素,并合并成一个集合

    import java.util.ArrayList; import java.util.List; public class Test { public static void main(Strin ...

  3. 对list集合中的对象进行排序(转载)

    原文链接:http://blog.csdn.net/veryisjava/article/details/51675036 Collections对List集合中的数据进行排序 有时候需要对集合中的元 ...

  4. java中的ArrayList 使得集合中的对象不重复

    JAVA中的List接口存放的元素是可以重复的,在这个我重写对象里面的equals()方法,让集合里存放的对象不能重复 首先建一个类,在里面的main()方法中实现 list1中存放的是可以重复对象的 ...

  5. 如何对List集合中的对象进行按某个属性排序

    我们在实际的开发工作中,经常会碰到排序的问题,如题,我们如何针对List集合中的某一个属性进行排序 当list集合中的元素类型是我们自定义类型时,有两种对list中的元素进行排序的方法: 方法一 让l ...

  6. Struts2的表单标签还可以为集合中的对象赋值

    •Struts 还允许填充 Collection 里的对象, 这常见于需要快速录入批量数据的场合   代码如下 : TestCollectionAction.java package com.atgu ...

  7. 对List集合中的对象中的某个属性进行排序

    今天在项目中遇到的问题,不能在sql中进行order by.所以将数据库中查询出来的集合,在java代码中进行排序 Collections.sort(list, new Comparator<H ...

  8. List集合中的对象根据属性排序

    集合类List存放的数据,默认是按照放入时的顺序存放的,比如依次放入A.B.C,则取得时候,则也是A.B.C的顺序,实际场景中,有时我们需要根据自定义的规则对List中的元素进行排序,该如何实现呢?看 ...

  9. 对list集合中的对象按照对象的某一属性进行排序

    /**  * 重新对list中的CmsCyUser对象按照最终的票数进行排序  * @param list  */ private void reSort(List list) {   Object[ ...

  10. List集合中的对象比较,取出不同对象

    今天在做金碟系统与我们系统的对接的时候需要做一个客户同步 在同步时,需要比较对象,对查询出的数据库的数据进行比较 for(int i=0;i<list2.size();i++){ if(! li ...

随机推荐

  1. #高斯消元,概率期望,动态规划#洛谷 3211 [HNOI2011]XOR和路径

    题目 分析 由于不同二进制位互不影响,所以考虑按位处理 设\(dp[i]\)表示第\(i\)个点某一位为1的概率,那么 \[dp[i]=\frac{1}{deg[i]}(\sum_{(i,u)=0}d ...

  2. #位运算#CF959E Mahmoud and Ehab and the xor-MST

    题目 \(n\)个点的完全图标号为\([0,n-1]\),\(i\)和\(j\)连边权值为\(i\: xor\:j\),求MST的值 分析 考虑MST有两种解法一种是Prim一种是Kruskal,Pr ...

  3. #floyd,分治#D 路径之和

    题目 对于每个\(y\),求除了\(y\)之外,其余的所有点组成的有序点对\((x,z)\) 不经过\(y\)的最短路长度之和(不存在即为-1).\(n\leq 320\) 分析 太妙了,首先用flo ...

  4. C语言 05 变量与常量

    变量 变量就像在数学中学习的 x,y 一样,可以直接声明一个变量,并利用这些变量进行基本的运算,声明变量的格式为: 数据类型 变量名称 = 初始值;(其中初始值可以不用在定义变量时设定) = 是赋值操 ...

  5. 一个很好用的ORM库--peewee

    发现一个很好用的 ORM 库 -- peewee 以下为简单示例 from peewee import * db = SqliteDatabase('test.db') # 定义表结构 class P ...

  6. 前端与 HTML

    0x1 前端 什么是前端 解决图形用户界面(GUI)人机交互的问题 跨终端 PC/移动浏览器 客户端/小程序 VR/AR 等 Web 技术栈 一句话总结前端工程师的工作:使用 Web 技术栈解决多端 ...

  7. Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用服务的必需组件-Nacos 、Sentinel等

    概述 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案.此项目包含开发分布式应用服务的必需组件. 方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发 ...

  8. CentOS 9 Basic Developing environment and IDEs installing guide

    I . Install Google Chrome browser Check the installed chrome and related packages with the command & ...

  9. c# 泛型原理(旧)

    前言 说起泛型可能很多人刚才看到的时候肯定会说牛逼啊,厉害啊,这东西少写了不少代码,我总结了泛型的一个优点,那就是少写代码,额,专业点吧. 优点:增加代码的重复利用率,代码重用. 先不讲原理吧,来讲下 ...

  10. 重新整理数据结构与算法(c#系列)—— 树的前中后序遍历查找[十七]

    前言 树的前中后序遍历 是根据前中后序的顺序来查找,找到了则弹出. 正文 节点模型: public class HeroNode { private int no; private string na ...