私は2つのリストを持っていaddList
ますdeleteList
の要素は、2 つのフィールドを持つaddList
型ですAddEntity
- id
- parentId
AddEntity クラスは次のとおりです。
public class AddEntity{
int id;
int parentId;
//getters and setters here
}
のエンティティは、フィールドが 1 つしかないdeleteList
タイプです。DeleteEntity
- deleteId
DeleteEntity クラスは次のとおりです。
public class DeleteList{
int deleteId;
//gettter and setter for deleteId goes here
}
今、私は2つのリストを持ってい
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
ます。また、 の id のいずれとも一致しないエンティティのみを保持したいと考えています。deleteId
deleteList
deleteList
addList
たとえば、この場合、上記の 2 つのリストを処理した後、の内容は次のように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 を使用してリストを反復処理しました。それが私が立ち往生し、これをポーズした場所です。