我是靠谱客的博主 魔幻鲜花,最近开发中收集的这篇文章主要介绍合并有相同属性的list,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

最近公司项目里面有这样的一个sql,多表关联查询,用list封装数据拼接成一个结果集返回,但是数据库数据量很大,而且查询的sql又很复杂,这样查出来需要很长时间,所以拆成单表查询,查询结果用同样的list去封装,最后将这些list组合成一个list,一开始用list.addAll()方法,但是这个只会在原有list尾部插入list,并没有把相同属性的值合并起来,

写了一个demo解决这个问题

package com.chenyong.test_java01;

import com.chenyong.test_java01.entity.Student;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


public class Test04 {
    public static void main(String[] args) {
        //两个集合合并成一个
        List<Student> demo1 = getDemo1();
        List<Student> demo2 = getDemo2();


        System.out.println("创建第一个数据:"+demo1);

        System.out.println("创建第二个数据:"+demo2);

        getCombineDemo2(demo1, demo2);

        System.out.println("结果集:"+demo2);
    }
    private static List<Student> getDemo1() {


        List<Student> stuList = new ArrayList<>();

        Student student = new Student();
        student.setNumber("10086");
        student.setName("zhangsan");

        Student student2 = new Student();
        student2.setNumber("10087");
        student2.setName("lisi");

        stuList.add(student);
        stuList.add(student2);

        return stuList;
    }
    private static List<Student> getDemo2() {


        List<Student> stuList = new ArrayList<>();

        Student student = new Student();
        student.setNumber("10086");

        student.setSex("0");
        student.setWork("programmer");

        Student student2 = new Student();
        student2.setNumber("10087");
        student2.setSex("1");
        student2.setWork("programmer");


        stuList.add(student);
        stuList.add(student2);

        return stuList;

    }
    private static void getCombineDemo2(List<Student> demo1, List<Student> demo2) {
        HashMap<String, Student> map = new HashMap<>();

        for (Student student : demo1) {
            map.put(student.getNumber(), student);
        }

        for (Student student : demo2) {
            String studentNumber = student.getNumber();
            Student student1 = map.get(studentNumber);
            if (student1 == null) {
                continue;
            }

            if (student.getName()==null) {
                student.setName(student1.getName());
            }

            if (student.getSex()==null) {
                student.setSex(student1.getSex());
            }

            if (student.getWork()==null) {
                student.setWork(student1.getWork());
            }

        }

    }
}

最后

以上就是魔幻鲜花为你收集整理的合并有相同属性的list的全部内容,希望文章能够帮你解决合并有相同属性的list所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部