我现在有三个List List里的对象是两个bean,我想要的条件是:list1和list2比较如果对象主键相等,累加添加到list3中。最后如果list1里的数据没有在list2中的数据,添加到list3中。如果list2没有在list1中,添加到list3中。
例:
bean1:
[code="java"]
public class Hyflightmanifest{
private String flightnumber;
private String inflag;
private Date schdate;
pirvate int num;
public String getFlightnumber() {
return flightnumber;
}
public void setFlightnumber(String flightnumber) {
this.flightnumber = flightnumber;
}
public String getInflag() {
return inflag;
}
public void setInflag(String inflag) {
this.inflag = inflag;
}
public Date getSchdate() {
return schdate;
}
public void setSchdate(Date schdate) {
this.schdate = schdate;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num= num;
}
}
[/code]
bean2:
[code="java"]
public class manifestbean{
private String flightnumber;
private String inflag;
private Date schdate;
pirvate int num;
public String getFlightnumber() {
return flightnumber;
}
public void setFlightnumber(String flightnumber) {
this.flightnumber = flightnumber;
}
public String getInflag() {
return inflag;
}
public void setInflag(String inflag) {
this.inflag = inflag;
}
public Date getSchdate() {
return schdate;
}
public void setSchdate(Date schdate) {
this.schdate = schdate;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num= num;
}
}
[/code]
[code="java"]
List maillist = cosysfightservicemailService.getBySeletive(example);
for (int i = 0; i < flightmanifestTempList.size(); i++) {
Hyflightmanifest manifestbean = new Hyflightmanifest();
manifestbean = flightmanifestTempList.get(i);
Date tempSchdate = manifestbean.getSchdate();
manifestbean.setSchdate(Tools.getDateByStr("yyyy-MM-dd", Tools.getStrByDate("yyyy-MM-dd", tempSchdate)));
for (int j = 0; j < maillist.size(); j++) {
Hycosysfightservicemail mailbean = new Hycosysfightservicemail();
if ((mailbean.getFlightnumber().trim()).equals(manifestbean.getFlightnumber().trim()) && (mailbean.getInflag().trim()).equals(manifestbean.getInflag().trim())
&& (mailbean.getActualdate().getTime() == manifestbean.getSchdate().getTime())) {
}
}
}
[/code]
[b]请问大家接着怎么做[/b]
基本思路如下(只能是1:1或者1:0匹配)
遍历list1,从list2查找匹配的,并且把找到删除
如果没有匹配的,直接加入list3
最后把list2剩下的加入list3
//List list1, list2;
List list3= new ArrayList();
// 实现查找,没有则返回null
manifestbean findAndRemoveFromList2(Hyflightmanifest f) {
for (Iterator it= list2.iterator(); it.hasNext()) {
manifestbean m= (manifestbean) it.next();
if PK相等 {
it.remove();
return m;
}
}
// no found
return null;
}
public void merge() {
for (Iterator it= list.iterator(); it.hasNext()) {
Hyflightmanifest h= (Hyflightmanifest) it.next();
m= findAndRemoveFromList2(h);
// 有则相加
if (null != m) {
}
// 无则直接加入list3
list3.add(h);
}
// 把list2剩下的加入list3
for (Iterator it= list2.iterator(); it.hasNext()) {
}
}