Javaでツリー構造オブジェクト/コレクションをロードする方法
2188 ワード
子クラスのparentIdが親クラスのidである「親子」関係を持つコレクションが作成されました.しかし,これらのデータは親サブセットのツリー構造に厳密に従って配列されていないため,プログラムで処理する必要がある.
基本的な考え方:
1)特定の構造のオブジェクト(id、parentId、children属性があり、childrenは独自のタイプの集合である)が必要であり、ソース集合(以下、上述した集合を総称してソース集合と呼ぶ)がこの構造を満たさない場合は、変換する必要がある.
2)この集合を2つのサイクル、すなわち内層サイクルと外層サイクルとする.内側ループで外側ループの各要素の親ノードを順に検索し、見つかったら外側ループのchildrenに入れ、最初にchildrenに入れる場合はchildrenセットを作成し、2回目の3回目以降に置くときにこのchildrenを取り出して入れます.親が見つからない場合は、ルートノードであることを示し、この要素を最初に定義したターゲットセットに入れます.
以下に例を示します.例には個性的な修正が含まれていますが、基本的な考え方は上記と同じです.
フロントエンドページのEasyUIのtreeを適用するために,ここではソースセットをMenuJsonタイプのセットに変換する.最終処理は集合であり、ページにjsonタイプが必要な場合はcomを直接使用することができる.alibaba.fastjson.JSONObject.toJSOnString(…)メソッドはjson文字列に変換されます.
基本的な考え方:
1)特定の構造のオブジェクト(id、parentId、children属性があり、childrenは独自のタイプの集合である)が必要であり、ソース集合(以下、上述した集合を総称してソース集合と呼ぶ)がこの構造を満たさない場合は、変換する必要がある.
2)この集合を2つのサイクル、すなわち内層サイクルと外層サイクルとする.内側ループで外側ループの各要素の親ノードを順に検索し、見つかったら外側ループのchildrenに入れ、最初にchildrenに入れる場合はchildrenセットを作成し、2回目の3回目以降に置くときにこのchildrenを取り出して入れます.親が見つからない場合は、ルートノードであることを示し、この要素を最初に定義したターゲットセットに入れます.
以下に例を示します.例には個性的な修正が含まれていますが、基本的な考え方は上記と同じです.
// menu
public List createMenuTree(List
//
private List convert2MJ(List
フロントエンドページのEasyUIのtreeを適用するために,ここではソースセットをMenuJsonタイプのセットに変換する.最終処理は集合であり、ページにjsonタイプが必要な場合はcomを直接使用することができる.alibaba.fastjson.JSONObject.toJSOnString(…)メソッドはjson文字列に変換されます.