比较两个list,如何找出相同属性id,其他属性,如name值不相同的数据?需要怎样重写equals吗?我用两次for循环,效率太低了!
public static List needupdatetdxxlist() {
List getoratdxxlist=getoratdxx();
List getresttdxxlist = getrestgctdxx();
List needupdatetdxx = new ArrayList();
try {
for (int i = 0; i < getresttdxxlist.size(); i++) {
gctd gctd =new gctd();
for (int j = 0; j < getoratdxxlist.size(); j++) {
String DevChnId = getresttdxxlist.get(i).getDevChnId();
String DevChnName = getresttdxxlist.get(i).getDevChnName();
String Manufacturer = getresttdxxlist.get(i).getManufacturer();
double GpsX=getresttdxxlist.get(i).getGpsX();
double GpsY=getresttdxxlist.get(i).getGpsY();
int DevChnType=getresttdxxlist.get(i).getDevChnType();
int CameraType=getresttdxxlist.get(i).getCameraType();
String DevChnSn =getresttdxxlist.get(i).getDevChnSn();
int Direct=getresttdxxlist.get(i).getDirect();
int LaneNo=getresttdxxlist.get(i).getLaneNo();
String OrgName = getresttdxxlist.get(i).getOrgName();
String OrgCode =getresttdxxlist.get(i).getOrgCode();
if (DevChnId.equals(getoratdxxlist.get(j).getDevChnId()) && !DevChnName.equals(getoratdxxlist.get(j).getDevChnName()))
{
gctd.setDevChnId(DevChnId);
gctd.setDevChnName(DevChnName);
gctd.setManufacturer(Manufacturer);
gctd.setGpsX(GpsX);
gctd.setGpsY(GpsY);
gctd.setDevChnType(DevChnType);
gctd.setCameraType(CameraType);
gctd.setDevChnSn(DevChnSn);
gctd.setDirect(Direct);
gctd.setLaneNo(LaneNo);
gctd.setOrgName(OrgName);
gctd.setOrgCode(OrgCode);
needupdatetdxx.add(gctd);
LOGGER.debug("需要更新的设备通道:"+DevChnId+" "+DevChnName);
break;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return needupdatetdxx;
}