ListA = [{displayName="a",title="b",fieldId="01"},{displayName="c",title="d",fieldId="02"}]
ListB = [{displayName=null,title="b",fieldId="01"},{displayName="c",title="d",fieldId="02"},{displayName="null",title="ddd",fieldId="03"},{displayName=null,title="adad",fieldId="04"}}...]
ListA和ListB 中对象属性是对应的,
我想得到一个新的List
ListC = [{displayName="a",title="b",fieldId="01"},{displayName="c",title="d",fieldId="02"},{displayName="null",title="ddd",fieldId="03"},{displayName=null,title="adad",fieldId="04"}...]JavaList
ListB = [{displayName=null,title="b",fieldId="01"},{displayName="c",title="d",fieldId="02"},{displayName="null",title="ddd",fieldId="03"},{displayName=null,title="adad",fieldId="04"}}...]
ListA和ListB 中对象属性是对应的,
我想得到一个新的List
ListC = [{displayName="a",title="b",fieldId="01"},{displayName="c",title="d",fieldId="02"},{displayName="null",title="ddd",fieldId="03"},{displayName=null,title="adad",fieldId="04"}...]JavaList
为null的就替换掉~~~
------------------------循环一个List、判断对象的属性值为null的就去另一个list里面找对应下标的list里面的对象的属性来覆盖当前的就行!
public class Toto {
public static List<SomeClass> merge(List<SomeClass> l1, List<SomeClass> l2){
List<SomeClass> list = new ArrayList<SomeClass>(l1);
List<String> fieldid = new ArrayList<String>();
for(SomeClass sc : list){
fieldid.add(sc.fieldid);
}
for(SomeClass sc : l2){
if (!fieldid.contains(sc.fieldid)){
list.add(sc);
}
}
return list;
}
public static void main(String... args) throws IOException {
List<SomeClass> listA = new ArrayList<SomeClass>();
listA.add(new SomeClass("a", "b", "01"));
listA.add(new SomeClass("c", "d", "02"));
List<SomeClass> listB = new ArrayList<SomeClass>();
listB.add(new SomeClass(null, "b", "01"));
listB.add(new SomeClass("c", "d", "02"));
listB.add(new SomeClass(null, "ddd", "03"));
listB.add(new SomeClass(null, "adad", "04"));
System.out.println(listA);
System.out.println(listB);
System.out.println(merge(listA, listB));
}
}class SomeClass {
public String displayName;
public String title;
public String fieldid;
public SomeClass(String displayName, String title, String fieldid){
this.displayName = displayName;
this.title = title;
this.fieldid = fieldid;
}
public String toString(){
return "{displayName="+displayName+",title="+title+",fieldid="+fieldid+"}";
}
}