元件我有兩個列表即,addList
並在addList
一個deleteList
比較和刪除清單
的元件是具有兩個字段
AddEntity
類型的
- id
- parentId
的AddEntity類是如下
public class AddEntity{
int id;
int parentId;
//getters and setters here
}
而deleteList
中的實體類型爲DeleteEntity
它只有一個場
- deleteId
的DeleteEntity類是如下
public class DeleteList{
int deleteId;
//gettter and setter for deleteId goes here
}
現在我有兩個列表 List<AddEntity> addList
和List<DeleteEntity> deleteList
對於EG。在addList
內容
id parentId
2001 3
2002 2001
2003 2001
2004 2002
2005 2003
2006 4
2007 2006
的deleteList
內容
deleteId
2001
3
2007
現在我想從addList
其id/parentId
與元素的deleteList
的deleteId
比賽中刪除的所有實體和他們的子女(遞歸)。 並且我還希望僅保留deleteList
中與addList
中的任何id不匹配的實體。
例如,在上述兩個名單處理後這種情況下,addList
的內容應該是
id parentId
2006 4
和deleteList
現在將包含
deleteId
3
我有邏輯正確,但面臨着一些問題在實現部分。我用JAVA來做。希望在這裏找到一些解決方案。 謝謝!
EDIT
- (因爲一些是心煩的問題)
我的方法
實際上邏輯是非常簡單的。但有點混亂。
Step1: For each elements in the deleteList{
For each elements in the addList{
a) Match deleteId with id of each element in addList.
if(deleteId==id){
mark current element from deleteList for deletion
loop: check if any other element in addList has parentId==id.
if YES mark it(addList element) for delete
take the id of the marked element and goto "loop"
}
}
Step2: Delete All Marked Elements!!
起初,我試圖用foreach
和刪除的列表,而不是將它們標記爲刪除元素。這導致ConcurrentModificationException
。然後我使用迭代器遍歷列表。那就是我陷入困境的地方。