addList
我有两个列表,即deleteList
中的元素是具有两个字段addList
的类型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
例如。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
与deleteId
. deleteList
而且我想只保留那些deleteList
不匹配任何 id 的实体addList
。
比如本例中处理完上面两个列表后,其内容addList
应该是
id parentId
2006 4
现在deleteList
将包含
deleteId
3
我的逻辑是正确的,但在实现部分遇到了一些问题。我正在用 JAVA 做。希望在这里找到一些解决方案。谢谢你!
编辑
-(因为有些人对这个问题感到不安)
我的方法
其实逻辑很简单。但有点混乱。
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
. 然后我使用 Iterator 迭代列表。这就是我被卡住并提出这个问题的地方。