Я не скажу много чепухи, просто опубликуйте вам код, конкретный код заключается в следующем:
// Структура дерева меню public jsonarray treemenulist (Jsonarray Menuist, int parentid) {jsonarray Childmenu = new jsonarray (); for (объект объекта: Menuist) {jsonObject jsonmenu = jsonObject.FromObject (Object); int menuid = jsonmenu.getint ("id"); int pid = jsonmenu.getint ("parentid"); if (parentid == pid) {jsonarray c_node = treeMeNulist (Menuist, 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 (); Меню меню1 = новое меню (); Menu1.setid (1L); Menu1.setParentid (0); Menu1.setlevel (0); Меню меню 2 = новое меню (); меню2.setid (2L); Menu2.setParentid (0); Menu2.setlevel (0); Меню меню3 = новое меню (); меню3.setid (3L); Menu3.SetParentId (2); Menu3.Setlevel (1); Меню меню 4 = новое меню (); Меню4.Setid (4L); Menu4.setParentid (2); меню4.setlevel (1); Меню меню 5 = новое меню (); Меню5.Setid (5L); Меню5.SetParentid (4); Меню5.Setlevel (2); Меню меню 6 = новое меню (); Menu6.setid (6L); Menu6.setParentid (1); Menu6.setlevel (1); jsonarray.add (menu1); jsonarray.add (menu2); jsonarray.add (меню3); jsonarray.add (menu4); jsonarray.add (Menu5); jsonarray.add (меню 6); System.out.print (menucacheservice.treemenulist (jsonarray, 0)); }PS: Java реализует рекурсивную обход дерева (используется для реализации меню обрушения)
1. Основной алгоритм
пакет com.zf.tag.dao; import java.util.arraylist; import java.util.list; import com.zf.tag.entity.dept.dept; открытый класс deptdao extends foundao {public static <dept> searchalldept () Throws Exception {object []> list [] liled [] list arrylobject = new arrameList <) () tofros exection {object []>> list []> list []> list []> list [] list []> list arraylist <); tmp = new ArrayList <Object []> (); List <Dept> listAllDept = new ArrayList <Dept> (); String SQL = "SELECT ID, DNAME, up_DID FROM TBL_DEPT"; LISTALLOBJECT = GETRESULT (SQL); для (Object [] row: listAllobject) {object [] [3]; row [1]; ro [2] = row [2]; tmp.add (row);} for (object [] row: tmp) {if (null == row [2]) {dept d = new Dept (); d.setid (integer.parseint (string.valueof (row [0])); d.setdname (string.valueof (row [1])); listalldept.add (d); Fomatedept (tmp, d);} return diStallDept;} private void fomatedEpt (списка <объект) depte -deptept; (Object [] row: tmp) {if (null! = Row [2])) && integer.parseint (string.valueof (row [2])) == dept.getid ()) {dept d = new Dept (); d.setid (integer.parseint (string.valueof (row [0]))); d.setdname (string.valueof (row [1])); list <dept> list = dept.getchildren (); if (list == null) {list = new ArrayList <Dept> ();} list.add (d); dept.setchildren (list); fomatedept (tmp, d);}}}}}2. Категория сущности (отдел)
пакет com.zf.tag.entity.dept; import java.util.list; открытый класс dept {private integer id; private String dname; Private list <Dept> kids; public integer getId () {return Id;} public void setId (integer id) {this.id = id;} public String getDame () {return dname; {this.dname = dname;} public List <Dept> getChildren () {return gtides;} public void setchildren (list <dept> children) {this.children = childres;} public String toString () {return this.getDname ();}}Выше приведено соответствующее содержание структуры дерева рекурсивного дерева Java, введенной вам редактором. Я надеюсь, что это будет полезно для всех!