Je ne dirai pas beaucoup de non-sens, il suffit de poster le code, le code spécifique est le suivant:
// Structure d'arbre de menu public JSONArray Treemenulist (JSONArray Menulist, int carentid) {JSONArray ChildMenu = new JSONArray (); pour (objet objet: Menulist) {jsonObject JSonMenu = jsonObject.FromObject (objet); int menuId = jsonMenu.getInt ("id"); int pid = jsonMenu.getInt ("parentid"); if (parentid == pid) {jsonArray c_node = treemeulist (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 (); Menu menu1 = new menu (); menu1.setid (1L); menu1.setParentId (0); menu1.setLevel (0); Menu menu2 = new menu (); menu2.setId (2L); menu2.setParentId (0); menu2.setLevel (0); Menu menu3 = new menu (); Menu3.SetId (3L); menu3.setParentId (2); menu3.setLevel (1); Menu menu4 = new menu (); Menu4.SetId (4L); menu4.SetParentId (2); menu4.setLevel (1); Menu menu5 = new menu (); Menu5.SetId (5L); menu5.setParentId (4); menu5.setLevel (2); Menu menu6 = new menu (); 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.Trememenulist (JSONArray, 0)); }PS: Java implémente la traversée récursive de l'arbre (utilisé pour implémenter le menu d'effondrement)
1. Algorithme de base
Package com.zf.tag.dao; Importer java.util.arraylist; import java.util.list; import com.zf.tag.entity.dept.dept; classe publique Deptdao étend Basedao {public static <Dept> SearchallDept () lance une exception {liste [objet []> listallobject = new ArrayList <Object []> (); tmp = new ArrayList <objet []> (); list <ftpt> listalldept = new ArrayList <Dpt> (); String sql = "select id, dname, up_did from tbl_dept"; listAlObject = getResult (sql); for (object [] row: listallobject) {object [] ro = new object [3]; ro [0] = ro [0]; 1] 1] row [1]; ro [2] = row [2]; tmp.add (row);} pour (objet [] 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); Fometept (TMP, D);}} retour (Objet [] 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 <Dpt> ();} list.add (d); Dept.Setchildren (list); FomateDept (tmp, d);}}}}}2. Catégorie d'entité (département)
Package com.zf.tag.entity.dept; import java.util.list; public class dept {private Integer id; private String dname; list private <Dept> Childre {this.dname = dname;} public list <ftp> getchildren () {return enfants;} public void SetChildren (list <dept> enfants) {this.children = enfants;} public string toString () {return this.getDname ();}}Ce qui précède est le contenu pertinent de la structure de l'arbre de traversée récursive Java qui vous est présentée par l'éditeur. J'espère que ce sera utile à tous!