java 相关 怎么把两个list用类似left join整合成一个
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
解答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;
}
}
}