1. สถานการณ์การใช้ประโยชน์
โครงสร้างโครงสร้างองค์กรมักจะมีตารางโครงสร้างองค์กรรวมถึงฟิลด์เช่นรหัส (รหัส), pcode (รหัสบน), ชื่อ (ชื่อองค์กร)
2. สร้างข้อมูล (ข้อมูลต่อไปนี้ไม่ใช่ข้อมูลองค์กร แต่ข้อมูลล้วนๆที่ฉันทำขึ้น)
รายการ <Tree <Test>> ต้นไม้ = arraylist ใหม่ <Tree <Test>> (); tests.add (การทดสอบใหม่ ("0", "", "เกี่ยวกับฉัน")); tests.add (การทดสอบใหม่ ("1", "0", "การเรียนรู้ทางเทคนิค")) "java")); tests.add (การทดสอบใหม่ ("4", "1", "Oracle")); tests.add (การทดสอบใหม่ ("5", "1", "Spring")) การทดสอบ (การทดสอบใหม่ ("6", "1", "SpringMvc"); "1", "linux")); tests.add (การทดสอบใหม่ ("9", "2", "ขี่จักรยาน")); การทดสอบ ADD (การทดสอบใหม่ ("10", "2", "กิน, ดื่ม, เล่น")) การทดสอบ (การทดสอบใหม่ ("11", "2", "เรียนรู้"); "4", "SQL")); tests.add (การทดสอบใหม่ ("14", "5", "IOC")); การทดสอบ ADD (การทดสอบใหม่ ("15", "5", "AOP")); การทดสอบ (การทดสอบใหม่ ("16", "1", "etc"); "3", "etc")); การทดสอบ ADD (การทดสอบใหม่ ("19", "4", "etc")); การทดสอบ ADD (การทดสอบใหม่ ("20", "5", "etc")); การทดสอบ (การทดสอบใหม่ ("20", "5", "); "3", "etc")); tests.add (การทดสอบใหม่ ("19", "4", "etc")); tests.add (การทดสอบใหม่ ("20", "5", "etc")); tests.add (การทดสอบใหม่ ("20", "5", "etc");3. ซอร์สโค้ด
Tree.java
แพ็คเกจ pers.kangxu.datautils.bean.tree; นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า java.util.map; นำเข้า com.alibaba.fastjson.json;/** ** ** id; / *** แสดงข้อความโหนด*/ ข้อความสตริงส่วนตัว; / ** * สถานะโหนดเปิดปิด */ สถานะสตริงส่วนตัว = "เปิด"; / ** * ไม่ว่าโหนดจะถูกเลือกจริง false */ บูลีนส่วนตัวตรวจสอบ = false; / *** แอตทริบิวต์โหนด*/ รายการส่วนตัว <แผนที่ <สตริงวัตถุ >> แอตทริบิวต์; / *** Children of the Node*/ รายการส่วนตัว <Tree <t>> เด็ก = arraylist ใหม่ <tree <t>> (); / ** * รหัสหลัก */ สตริงส่วนตัว parentid; / *** ไม่ว่าจะมีโหนดแม่*/ บูลีนส่วนตัว isparent = false; / *** ไม่ว่าจะมีโหนดเด็ก*/ บูลีนส่วนตัว ischildren = false; สตริงสาธารณะ getId () {return id; } โมฆะสาธารณะ setId (รหัสสตริง) {this.id = id; } สตริงสาธารณะ getText () {ส่งคืนข้อความ; } โมฆะสาธารณะ setText (ข้อความสตริง) {this.text = text; } สตริงสาธารณะ getState () {return state; } โมฆะสาธารณะ setState (สถานะสตริง) {this.state = state; } บูลีนสาธารณะ ischecked () {ส่งคืนตรวจสอบ; } โมฆะสาธารณะ setChecked (ตรวจสอบบูลีน) {this.Checked = ตรวจสอบ; } รายการสาธารณะ <แผนที่ <สตริงวัตถุ >> getAttributes () {return attributes; } โมฆะสาธารณะ setAttributes (รายการ <แผนที่ <สตริงวัตถุ >> แอตทริบิวต์) {this.attributes = แอตทริบิวต์; } รายการสาธารณะ <Tree <t>> getChildren () {return children; } โมฆะสาธารณะ setchildren (รายการ <tree <t>> เด็ก ๆ ) {this.children = เด็ก ๆ ; } บูลีนสาธารณะ isparent () {return isparent; } โมฆะสาธารณะ setParent (บูลีน iSparent) {this.isparent = iSparent; } public boolean ischildren () {return ischildren; } โมฆะสาธารณะ setchildren (บูลีน ischildren) {this.ischildren = ischildren; } สตริงสาธารณะ getParentId () {return parentId; } โมฆะสาธารณะ setParentId (สตริง parentId) {this.parentId = parentId; } ต้นไม้สาธารณะ (รหัสสตริง, ข้อความสตริง, สถานะสตริง, บูลีนตรวจสอบ, รายการ <แผนที่ <สตริง, วัตถุ >> แอตทริบิวต์, รายการ <tree <t>> เด็ก, บูลีน iSparent, ischildren บูลีน, สตริง parentid) {super (); this.id = id; this.text = text; this.state = state; สิ่งนี้ตรวจสอบ = ตรวจสอบ; this.attributes = แอตทริบิวต์; this.children = เด็ก ๆ ; this.isparent = iSparent; this.ischildren = ischildren; this.parentid = parentid; } ต้นไม้สาธารณะ () {super (); } @Override สตริงสาธารณะ toString () {return json.tojsonstring (นี่); -buildtree.java
แพ็คเกจ pers.kangxu.datautils.common.tree; นำเข้า java.util.arraylist; นำเข้า java.util.list; นำเข้า pers.kangxu.datautils.bean.tree.tree;/** * build troe * <br> * @author Kangxu2 2017-1 @author Kangxu2 2017-1-7 * * @param โหนด * @return */ สาธารณะคงที่ <t> ต้นไม้ <t> build (รายการ <tree <t>> โหนด) {ถ้า (โหนด == null) {return null; } list <tree <t>> topNodes = new ArrayList <tree <t> (); สำหรับ (ต้นไม้ <t> เด็ก: โหนด) {String pid = children.getParentId (); if (pid == null || "" .equals (pid)) {topnodes.add (เด็ก); ดำเนินการต่อ; } สำหรับ (tree <t> parent: nodes) {string id = parent.getId (); if (id! = null && id.equals (PID)) {parent.getChildren (). เพิ่ม (เด็ก); children.setparent (จริง); parent.setchildren (จริง); ดำเนินการต่อ; }}} ต้นไม้ <t> root = ใหม่ต้นไม้ <t> (); if (topNodes.size () == 0) {root = topNodes.get (0); } else {root.setId ("-1"); root.setParentId (""); root.setparent (เท็จ); root.setchildren (จริง); root.setchecked (จริง); root.setchildren (topnodes); root.settext ("โหนดระดับบนสุด"); } return root; -buildTreetester.java
แพ็คเกจ pers.kangxu.datautils.test; นำเข้า java.util.arraylist; นำเข้า java.util.list; การนำเข้า pers.kangxu.datautils.bean.tree.tree; นำเข้า pers.kangxu.datautils.common.tree.buildtree; รายการ <ต้นไม้ <ทดสอบ >> ต้นไม้ = arraylist ใหม่ <Tree <Test>> (); รายการ <TEST> การทดสอบ = arrayList ใหม่ <Test> (); tests.add (การทดสอบใหม่ ("0", "", "เกี่ยวกับฉัน")); การทดสอบ ADD (การทดสอบใหม่ ("1", "0", "การเรียนรู้ทางเทคนิค")); การทดสอบ ADD (การทดสอบใหม่ ("2", "0", "ดอกเบี้ย")); tests.add (การทดสอบใหม่ ("3", "1", "java")); การทดสอบ ADD (การทดสอบใหม่ ("4", "1", "Oracle")); การทดสอบ ADD (การทดสอบใหม่ ("5", "1", "Spring")); การทดสอบ ADD (การทดสอบใหม่ ("6", "1", "SpringMVC")); tests.add (การทดสอบใหม่ ("7", "1", "fastdfs")); การทดสอบ ADD (การทดสอบใหม่ ("8", "1", "Linux")); การทดสอบ ADD (การทดสอบใหม่ ("9", "2", "ขี่จักรยาน")); การทดสอบ ADD (การทดสอบใหม่ ("10", "2", "การกิน, ดื่มและสนุก")); การทดสอบ ADD (การทดสอบใหม่ ("11", "2", "การเรียนรู้")); การทดสอบ ADD (การทดสอบใหม่ ("12", "3", "String")); การทดสอบ ADD (การทดสอบใหม่ ("13", "4", "SQL")); การทดสอบ ADD (การทดสอบใหม่ ("14", "5", "IOC")); การทดสอบ ADD (การทดสอบใหม่ ("15", "5", "AOP")); การทดสอบ ADD (การทดสอบใหม่ ("16", "1", "ฯลฯ ")); การทดสอบ ADD (การทดสอบใหม่ ("17", "2", "ฯลฯ ")); การทดสอบ ADD (การทดสอบใหม่ ("18", "3", "ฯลฯ ")); การทดสอบ ADD (การทดสอบใหม่ ("19", "4", "ฯลฯ ")); การทดสอบ ADD (การทดสอบใหม่ ("20", "5", "ฯลฯ ")); สำหรับ (ทดสอบทดสอบ: การทดสอบ) {Tree <Test> Tree = New Tree <Test> (); tree.setid (test.getId ()); tree.setParentId (test.getPid ()); tree.settext (test.getText ()); Trees.add (ต้นไม้); } ต้นไม้ <Test> t = buildTree.build (ต้นไม้); System.out.println (t); }} การทดสอบคลาส {รหัสส่วนตัว ID; Private String PID; ข้อความสตริงส่วนตัว สตริงสาธารณะ getId () {return id; } โมฆะสาธารณะ setId (รหัสสตริง) {this.id = id; } สตริงสาธารณะ getPid () {return pid; } โมฆะสาธารณะ setPID (สตริง pid) {this.pid = pid; } สตริงสาธารณะ getText () {ส่งคืนข้อความ; } โมฆะสาธารณะ setText (ข้อความสตริง) {this.text = text; } การทดสอบสาธารณะ (String ID, String PID, ข้อความสตริง) {super (); this.id = id; this.pid = pid; this.text = text; } การทดสอบสาธารณะ () {super (); } @Override สตริงสาธารณะ toString () {return "ทดสอบ [id =" + id + ", pid =" + pid + ", text =" + text + "]"; -4. ผลการดำเนินงาน
ข้อมูล JSON:
{"ตรวจสอบ": จริง, "เด็ก ๆ ": [{"ตรวจสอบ": เท็จ, "เด็ก ๆ ": [{"ตรวจสอบ": เท็จ, "เด็ก ๆ ": [{"ตรวจสอบ": เท็จ, "เด็ก ๆ ": [{"ตรวจสอบ": "เด็ก": ":": " "text": "String"}, {"ตรวจสอบ": false, "children": [], "id": "18", "parent": true, "parentid": "3", "state": "เปิด", "text": "etc"}], "id": "3", " "ตรวจสอบ": เท็จ, "เด็ก ๆ ": [{"ตรวจสอบ": เท็จ, "เด็ก ๆ ": [], "id": "13", "ผู้ปกครอง": จริง, "parentid": "4", "state": "เปิด", "text": "SQL"}, {":" "text": "etc"}], "id": "4", "parent": true, "parentid": "1", "state": "เปิด", "text": "Oracle"}, {"ตรวจสอบ": เด็ก ๆ ": [{{" "text": "ioc"}, {"ตรวจสอบ": เท็จ, "เด็ก ๆ ": [], "id": "15", "พาเรนต์": จริง, "parentid": "5", "state": "เปิด", "text": "AOP"}, {" "text": "etc"}], "id": "5", "parent": true, "parentid": "1", "state": "เปิด", "text": "Spring"}, {"ตรวจสอบ": เด็ก ๆ ": []," id ":" 6 "," "ตรวจสอบ": false, "เด็ก": [], "id": "7", "parent": true, "parentid": "1", "state": "เปิด", "text": "fastdfs"}, {"checked": talse, "เด็ก": "": "" "ตรวจสอบ": เท็จ "เด็ก ๆ ": [], "id": "16", "ผู้ปกครอง": จริง, "parentid": "1", "state": "เปิด", "ข้อความ": "etc"}], "id": "1", "ผู้ปกครอง": จริง " "ตรวจสอบ": เท็จ, "เด็ก ๆ ": [], "id": "9", "ผู้ปกครอง": จริง, "parentid": "2", "state": "เปิด", "ข้อความ": "ขี่จักรยาน"}, {"ตรวจสอบ": เด็ก ๆ ":" ":" {"ตรวจสอบ": false, "เด็ก ๆ ": [], "id": "11", "ผู้ปกครอง": จริง, "parentid": "2", "state": "เปิด", "ข้อความ": "การเรียนรู้"}, {":" เด็ก ":" ":" "ID": "2", "Parent": True, "Parentid": "0", "state": "เปิด", "text": "ความสนใจ"}], "id": "0", "parent": false, "parentid": "" state ":" เปิด ":" "ข้อความ": "โหนดบนสุด"}ข้างต้นเป็นเนื้อหาทั้งหมดของวิธี Java ในการสร้างข้อมูลโครงสร้างต้นไม้ JSON ตามเนื้อหาของตารางฐานข้อมูล ฉันหวังว่าทุกคนจะสนับสนุน wulin.com ~