比如我有兩個列表讓列表newList和列表oldList,列表(ArrayList的)比較
1)newRec - >通過尋找所有對象生成對象(newRec)的列表newList參數不在oldList參數中。
2)newUpdate & &
3)oldUpdate - >生成( 「newUpdate」)和( 「oldUpdate」)對象通過發現存在於兩個,所述newList所有對象更新的列表和oldList參數,但具有不同的描述(xxx不匹配)。
4)oldRec - >通過查找oldList參數中不在newList參數中的所有對象,將對象列表構建到(oldRec)。
所以最後我會送四個列表,它是newRec,newUpdate,oldUpdate,oldRec ....
好心幫我.. 在此先感謝
請參考我的方法。 。
public Response maintainFieldDescriptions(List<BarcodeFieldDesc> newDescList,
List<BarcodeFieldDesc> oldDescList)
{
try
{
List<BarcodeFieldDesc> writes = new ArrayList<BarcodeFieldDesc>();
List<BarcodeFieldDesc> updatesNew = new ArrayList<BarcodeFieldDesc>();
List<BarcodeFieldDesc> updatesOld = new ArrayList<BarcodeFieldDesc>();
List<BarcodeFieldDesc> deletes = new ArrayList<BarcodeFieldDesc>();
if (newDescList != null && newDescList.size() > 0)
{
for (int i = 0; i < newDescList.size(); i++)
{
BarcodeFieldDesc temp = newDescList.get(i);
boolean handled = false;
if (oldDescList != null && oldDescList.size() > 0)
{
for (int j = 0; j < oldDescList.size(); j++)
{
BarcodeFieldDesc temp2 = oldDescList.get(j);
if (temp.getKey().equals(temp2.getKey()))
{
handled = true;
// Keys match
if (!temp.toString().equals(temp2.toString()))
{
// Difference found
updatesNew.add(temp);
updatesOld.add(temp2);
}
}
else
{
// Keys do not match
}
}
}
if (!handled)
{
writes.add(temp);
}
}
}
if (oldDescList != null && oldDescList.size() > 0)
{
for (int i = 0; i < oldDescList.size(); i++)
{
BarcodeFieldDesc temp = oldDescList.get(i);
boolean handled = false;
for (int j = 0; j < newDescList.size(); j++)
{
BarcodeFieldDesc temp2 = newDescList.get(j);
if (temp.getKey().equals(temp2.getKey()))
{
handled = true;
}
else
{
// Keys do not match
}
}
if (!handled)
{
deletes.add(temp);
}
}
}
public String getKey()
{
String result = "";
result = result + StringUtil.pad(getFDPART(), 3, ' ', 'L');
result = result + StringUtil.pad(getFDPROF(), 10, ' ', 'L');
result = result + StringUtil.pad(getFDOTFT(), 20, ' ', 'L');
result = result + StringUtil.pad(getFDLNGC(), 2, ' ', 'L');
return result;
}
public String toString()
{
String result = "";
result = result + StringUtil.pad(getFDPART(), 3, ' ', 'L');
result = result + StringUtil.pad(getFDPROF(), 10, ' ', 'L');
result = result + StringUtil.pad(getFDOTFT(), 20, ' ', 'L');
result = result + StringUtil.pad(getFDLNGC(), 2, ' ', 'L');
result = result + StringUtil.pad(getFDDESC(), 32, ' ', 'L');
return result;
}
這在BarcodeFieldDesc類..
所以在這裏,如果newList和OldList有元素,那麼它不創造newUpdate和oldUpdate名單..
你爲什麼不告訴我們什麼樣的代碼你已經嘗試了這個家庭作業問題,也許我們可以告訴你你出錯的地方。 – tster 2011-03-20 12:27:50
那麼到目前爲止你做了什麼?你卡在哪裏,問題是什麼? – Howard 2011-03-20 12:28:13
@霍華德實際上我無法構建第二個列表newUpadte和oldUpdate – vinod 2011-03-20 12:31:16