ฉันจะไม่พูดเรื่องไร้สาระมากแค่โพสต์รหัสให้คุณรหัสเฉพาะมีดังนี้:
// เมนูโครงสร้างโครงสร้างสาธารณะ jsonarray treemenulist (jsonarray menulist, int parentid) {jsonarray childmenu = new jsonarray (); สำหรับ (วัตถุวัตถุ: menulist) {jsonobject jsonmenu = jsonobject.fromobject (วัตถุ); 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); }} ส่งคืน ChildMenu; } โมฆะคงที่สาธารณะหลัก (สตริง args []) {menucacheservice menucacheservice = menucacheservice ใหม่ (); jsonArray jsonarray = new JsonArray (); เมนูเมนู 1 = เมนูใหม่ (); menu1.setId (1L); menu1.setParentId (0); menu1.setLevel (0); เมนูเมนู 2 = เมนูใหม่ (); menu2.setId (2L); menu2.setParentId (0); menu2.setLevel (0); เมนูเมนู 3 = เมนูใหม่ (); menu3.setid (3L); Menu3.SetParentId (2); menu3.setlevel (1); เมนูเมนู 4 = เมนูใหม่ (); เมนู 4.SetId (4L); menu4.setParentId (2); menu4.setLevel (1); เมนูเมนู 5 = เมนูใหม่ (); เมนู 5.SetId (5L); เมนู 5.SetParentId (4); เมนู 5.SetLevel (2); เมนูเมนู 6 = เมนูใหม่ (); Menu6.SetId (6L); Menu6.SetParentId (1); Menu6.SetLevel (1); jsonarray.add (เมนู 1); jsonarray.add (เมนู 2); jsonarray.add (เมนู 3); jsonarray.add (เมนู 4); jsonarray.add (เมนู 5); jsonarray.add (เมนู 6); System.out.print (Menucacheservice.treemenulist (Jsonarray, 0)); -PS: Java ใช้การสำรวจซ้ำของต้นไม้ (ใช้เพื่อใช้เมนูการยุบ)
1. อัลกอริทึมหลัก
แพ็คเกจ com.zf.tag.dao; นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า com.zf.tag.entity.dept.dept; คลาสสาธารณะ Deptdao ขยายพื้นฐาน {รายการคงที่ <Dept> searchalldept () tmp = new ArrayList <object []> (); list <dept> listallDept = new ArrayList <Dept> (); String SQL = "Select ID, DNAME, UP_DID จาก TBL_DEPT"; liStAllObject = getResult (SQL); = แถว [1]; ro [2] = แถว [2]; tmp.add (แถว);} สำหรับ (วัตถุ [] แถว: tmp) {ถ้า (null == แถว [2]) {dept d = ใหม่ dept (); d.setId (integer.parseint (string.valueof (แถว [0]))); d.setDname (string.valueof (แถว [1])); listalldept.add (d); fomatedept (tmp, d);}} (วัตถุ [] แถว: tmp) {if ((null! = row [2]) && integer.parseint (string.valueof (แถว [2])) == dept.getId ()) {dept d = ใหม่ dept (); d.setId (integer.parseint (string.valueof (แถว [0]))); d.setDname (string.valueof (แถว [1])); รายการ <pt> list = dept.getChildren (); if (list == null) arrayList <pt> ();} list.add (d); dept.setchildren (รายการ); fomatedept (tmp, d);}}}}}}2. หมวดหมู่เอนทิตี (แผนก)
แพ็คเกจ com.zf.tag.entity.dept; นำเข้า java.util.list; คลาสสาธารณะ Dept {ID INTEGER ส่วนตัว; สตริงส่วนตัว DNAME; รายการส่วนตัว <Sept> เด็ก; {this.dname = dname;} รายการสาธารณะ <pt> getChildren () {return children;} โมฆะสาธารณะ setchildren (รายการ <Stt> เด็ก) {this.children = เด็ก;} สตริงสาธารณะ toString ()ข้างต้นเป็นเนื้อหาที่เกี่ยวข้องของโครงสร้างต้นไม้ทราเวอร์ซัลแบบเรียกซ้ำ Java ที่แนะนำโดยบรรณาธิการ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน!