java 相关 怎么把两个list用类似left join整合成一个

问题遇到的现象和发生背景
现在有两个list,list1和list2
list1中内容 0 {No:1, name1:40}
1 {No:2, name1:20}
2 {No:3, name1:10}
3 {No:5, name1:30}
4 {No:6, name1:60}
.
list2中内容 0 {No:1, name2:20}
1 {No:2, name2:20}
2 {No:3, name2:10}
3 {No:4, name2:30}
4 {No:8, name2:60}

我想要达到的结果
可以看到两个list中有的No相同,有的只有一个才有
现在需要整合两个list变成一个新的list,若有相同No编号,则变为{No:1,name1:40,name2:20 different:20 }这种格式,different是list1-list2的差额
若无,则{No:2,name1:30,name2:0 different:30}

解答1

968259933256118.png

解答2

参考代码如下:如有帮助望采纳
sql语句

sql语句
SELECT list1.no,(list1.name-list2.name)different

            FROM list list1
            left join list list2
            WHERE  list1.no = list2.no

java代码

java代码
public class TEST {

public static void main(String[] args) {
   
    List<Model1> list1 = new ArrayList();
    List<Model1> list2 = new ArrayList();
    List<Model2> list3= new ArrayList();
    for (int i=0;i<list1.size();i++){
        for (int j=0;j< list2.size();j++){

//判断两个集合no是否相等

           if (list1.get(i).getNo()==list2.get(i).getNo()){

//给第三个集合赋值并计算different

               Model2 model2=new Model2();
               model2.setName(list1.get(i).getName());
               model2.setNo(list1.get(i).getNo());
               model2.setDifferent(list1.get(i).getName()-list2.get(i).getName());
           list3.add(model2);
           }
        }
    }
    System.out.println(list3);
}

private static class Model2 {
    Integer no;
    Integer name;
    Integer different;

    public Integer getNo() {
        return no;
    }

    public void setNo(Integer no) {
        this.no = no;
    }

    public Integer getName() {
        return name;
    }

    public void setName(Integer name) {
        this.name = name;
    }

    public Integer getDifferent() {
        return different;
    }

    public void setDifferent(Integer different) {
        this.different = different;
    }
}
private static class Model1 {
    Integer no;
    Integer name;

    public Integer getNo() {
        return no;
    }

    public void setNo(Integer no) {
        this.no = no;
    }

    public Integer getName() {
        return name;
    }

    public void setName(Integer name) {
        this.name = name;
    }
}

}

标签: none

相关阅读

  • 测试信息
  • 开发商:阿里巴巴
  • 版本号:1.0
  • 配色:(企业家)” 推选活动结果
  • 测试信息
  • 测试信息
  • 测试信息