Saya tidak akan mengatakan banyak omong kosong, cukup posting kode kepada Anda, kode spesifiknya adalah sebagai berikut:
// menu struktur pohon publik jsonarray treemenulist (jsonarray menulist, int parentid) {jsonarray childmenu = new jsonarray (); untuk (objek objek: menulist) {jsonObject jsonMenu = jsonobject.fromObject (objek); 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 = menucacheservice baru (); Jsonarray jsonarray = jsonarray baru (); Menu menu1 = menu baru (); menu1.setid (1L); menu1.setParentId (0); menu1.setlevel (0); Menu menu2 = menu baru (); menu2.setid (2L); menu2.setParentId (0); menu2.setLevel (0); Menu menu3 = menu baru (); menu3.setid (3L); menu3.setParentId (2); menu3.setlevel (1); Menu menu4 = menu baru (); menu4.setid (4L); menu4.setParentId (2); menu4.setlevel (1); Menu menu5 = menu baru (); menu5.setid (5L); menu5.setParentId (4); menu5.setlevel (2); Menu menu6 = menu baru (); menu6.setid (6L); menu6.setParentId (1); menu6.setlevel (1); jsonarray.add (menu1); jsonarray.add (menu2); jsonarray.add (menu3); jsonarray.add (menu4); jsonarray.add (menu5); jsonarray.add (menu6); System.out.print (Menucacheservice.treemenulist (JsonArray, 0)); }PS: Java mengimplementasikan traversal rekursif pohon (digunakan untuk mengimplementasikan menu runtuh)
1. Algoritma inti
Paket com.zf.tag.dao; import java.util.arraylist; import java.util.list; import com.zf.tag.entity.dept.dept; kelas publik deptdao meluas berdasarkan objek {public static <dept> pencarian () lemparan pengecualian {list <list []> public static <cept> need ArrayList <Object []> (); Daftar <Object []> tmp = ArrayList baru <object []> (); Daftar <dept> listAllDept = new ArrayList <dept> (); string sql = "SELECT ID, dname, UPR_DID dari tbl_dept"; listallObject sql = getResult (SQL) dari TBL_DEPT "; listallObject = getResult (SQL) (sql) dari tbl_dept"; listallObject = getResult (sql) roDall (sql) roCeDED (tbl_dept; Objek [3]; ro [0] = baris [0]; ro [1] = baris [1]; ro [2] = baris [2]; tmp.add (baris);} untuk (objek [] baris: tmp) {if (null == baris [2]) {dept d = baru Dept (); d.setid (integer.parseint (string.valueof (baris [0]))); d.setDname (string.ValueOf (baris [1])); listalldept.add (d); fomatedept (tmp, d);} listAlldept; (Objek [] baris: tmp) {if ((null! = Row [2]) && integer.parseInt (string.valueof (baris [2])) == dept.getid ()) {dept d = baru Dept (); d.setId (integer.parseint (string.valueof (baris [0]))); d.setDname (string.valueof (baris [1])); Daftar <dept> Daftar = Dept.getChildren (); if (list == null) {list = List = New ArrayList <dept> ();} list.add (d); dept.setchildren (daftar); fomatedept (tmp, d);}}}}}2. Kategori Entitas (Departemen)
package 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(Integer id) {this.id = id;}public String getDname() {return dname;}public void setDname(String dname) {this.dname = dname;} Daftar publik <dept> getchildren () {return children;} public void setChildren (Daftar <Ept> anak -anak) {this.children = anak -anak;} public string toString () {return this.getDname ();}}Di atas adalah konten yang relevan dari struktur pohon traversal rekursif Java yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu semua orang!