概述
最近公司项目里面有这样的一个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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复