我有一個包含以下示例數據的電子表格。Java根據條件查找重複項並覆蓋/更新重複對象中的部分數據
在Java中,使用JXL,我將數據讀入名爲MergeObject.java自定義對象。這個類是一個簡單的POJO,其中有列映射到電子表格中的標題。閱讀電子表格後,我有一個合併對象的Arraylist。
我不想使用一組,因爲我想保留副本。我想循環列表arraylist並找出列表中的重複項。爲了符合重複條件,兩個條目需要具有相同的名字和姓氏。例如,行2,3,4是重複的,行5,6是重複的,行7,8是重複的。我已經重寫了equals方法來定義這個。
這是我的問題。在確定了重複的一組行(2,3,4),(5,6),(7,8)之後,我將定義哪一行優於哪一行。例如,我可能會認爲具有「正常評論」的評論部分可能是優秀的副本。確定之後,我想用它的ID值填充「下級副本」的「重複ID」列,然後用「上級副本」行ID替換「下級副本」的ID列。
因此,第4行的重複ID需要與82046555和第4行的ID來填充需要與82046565. 2,3行被替換將不會改變。
我需要使用哪些數據結構?我嘗試了下面的代碼,但我無法獲得列表中的重複項。
任何指針將不勝感激。
List<ArrayList<MergeObject>> superDuperList = new ArrayList<ArrayList<MergeObject>>();
//使用JXL,在一個循環中,我已填充的行到名爲saoList一個ArrayList。 List saoList = new ArrayList();
ArrayList<MergeObject> innerList = new ArrayList<MergeObject>();
MergeObject lastItem = null;
for (MergeObject item : saoList)
{
if(null == lastItem)
{
innerList.add(item);
lastItem = item;
}
else
{
if(item.equals(lastItem))
{
innerList.add(item);
}
else
{
superDuperList.add(innerList);
innerList = new ArrayList<MergeObject>();
innerList.add(item);
lastItem = item;
}
}
}
你能否澄清一下'saoList'在這裏?我看到你正在循環它,但我沒有看到它的聲明或任何地方的任務。 –
你能提供你的完整代碼,並且你是否嘗試調試你的代碼,看看爲什麼不刪除重複項? –
@AmitK是的,我試着調試我的代碼。首先,我不是100%確定陣列陣列的數據結構是否是正確的選擇。 – user972391