元件我有两个列表即,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
。然后我使用迭代器遍历列表。那就是我陷入困境的地方。