No diré muchas tonterías, solo publique el código, el código específico es el siguiente:
// estructura de árbol de menú public jsonArray Treemenulist (JSONArray Menulist, int for (objeto objeto: menulist) {jsonObject jsonmenu = jsonObject.FromObject (objeto); int Menuid = jsonmenu.getInt ("id"); int pid = jsonmenu.getInt ("ParentId"); if (parentId == pid) {jSonArray c_node = TreeMenulist (Menulist, Menuid); jsonmenu.put ("ChildNode", c_node); Childmenu.add (Jsonmenu); }} return Childmenu; } public static void main (string args []) {menucacheservice menucacheservice = new Menucacheservice (); JSONArray JSONArray = new JsonArray (); Menú menú1 = nuevo menú (); menú1.setId (1l); menú1.setParentId (0); menú1.setLevel (0); Menú menú2 = nuevo menú (); menú2.SetId (2l); menú2.SetParentId (0); menú2.setLevel (0); Menú menú3 = nuevo menú (); menú3.SetId (3L); menú3.SetParentId (2); menú3.setLevel (1); Menú menú4 = nuevo menú (); menú4.SetId (4L); menú4.SetParentId (2); menú4.setLevel (1); Menú menú5 = nuevo menú (); menú5.SetId (5L); menú5.SetParentId (4); menú5.setLevel (2); Menú menú6 = nuevo menú (); menú6.setId (6l); menú6.setParentId (1); menú6.setLevel (1); JSONArray.Add (menú1); JSONArray.Add (menú2); JSONArray.Add (menú3); JSONArray.Add (menú4); JSONArray.Add (menú5); JSONArray.Add (menú6); System.out.print (Menucacheservice.Treemenulist (JSONArray, 0)); }PD: Java implementa el recorrido recursivo del árbol (utilizado para implementar el menú de colapso)
1. Algoritmo de núcleo
paquete com.zf.tag.dao; import java.util.arrayList; import java.util.list; import com.zf.tag.entity.dept.dept; public class DeptDao extiende BeduseOo {public static list <dept> SearchallDept () Exception {List []> ListAllObject = NewArayList <Object []; tmp = new ArrayList <Object []> (); List <Dept> ListallDept = new ArrayList <Dept> (); String sql = "Seleccionar id, dname, up_did desde tbl_depto"; listAlLObject = getResult (sql); for (object [] row: listAllObject) {] Ro = new Object [3]; Ro [0] = fila [1]; ro [2] = fila [2]; tmp.add (fila);} para (objeto [] fila: tmp) {if (null == fila [2]) {departamento d = nuevo DePT (); D.SetId (Integer.ParseInt (String.ValueOf (fila [0]))); d.SetDName (String.ValueOf (fila [1])); listAllDept.add (d); fomedept (tmp, d);}} return ListAllDepT;} private estaticón fomado (lista <objeto <]> tmp, deTt) (Objeto [] fila: tmp) {if ((null! = Row [2]) && integer.parseInt (string.ValueOf (fila [2])) == Dept.getId ()) {departamento d = nuevo DePT (); D.SetId (Integer.ParseInt (String.ValueOf (fila [0]))); D.SetDName (String.ValueOf (fila [1])); List <Dept> list = dePT.GetChildren (); if (list == null) {list = new = new ArrayList <Dept> ();} list.Add (d); Dept.setchildren (list); fomatedept (tmp, d);}}}}}2. Categoría de entidad (Departamento)
paquete com.zf.tag.entity.dept; import java.util.list; public class Dept {private Integer ID; private String dname; private list <dept> children; public integer getId () {return Id;} public void setid (ID de entero) {this.id = id;} public string getDname () {return dname;} setid setid) {this.dname = dname;} Lista pública <Dept> getChildren () {return children;} public void setChildren (List <Dept> niños) {this.children = children;} public String toString () {return this.getdname ();}}Lo anterior es el contenido relevante de la estructura de árbol transversal recursiva de Java introducido por el editor. ¡Espero que sea útil para todos!