1. Сценарии использования
Организационная структура дерева, обычно существует таблица организационной структуры, включая такие области, как код (код), PCODE (верхний код), имя (имя организации)
2. Создайте данные (следующие данные не являются организационными данными, а чисто данные, которые я составил)
Список <tree <Test>> Trees = new ArrayList <tree <test >> (); tests.add (новый тест («0», «», «О меня»)); tests.add (новый тест («1», «0», «Техническое обучение»)); tests.add (новый тест («2», «0», «Интерес»); «Java»)); tests.add (новый тест («4», «1», «oracle»)); tests.add (новый тест («5», «1», «пружина»)); tests.add (новый тест («6», «1», «Springmvc»); tests.add (новый тест («7», «1», Fastdf »); «1», «Linux»)); tests.add (новый тест («9», «2», «езда на велосипеде»)); tests.add (новый тест («10», «2», «Ешь, напиток, игра»)); tests.add (новый тест («11», «2», «обучение»); tests.add (New Test («12», «3». «4», «SQL»)); Tests.add (новый тест («14», «5», «ioc»)); tests.add (новый тест («15», «5», «aop»)); tests.add (новый тест («16», «1», «и т. Д.»); Tests.add (new Test («17», «2», «etc»); «3», «и т. Д.»)); Tests.add (новый тест («19», «4», «и т. Д.»)); Tests.add (новый тест («20», «5», «и т. Д.»)); Tests.add (новый тест («20», «5», «и т. Д.»); Tests.add (новый тест («20», «5», «etc»); "3", "etc")); tests.add (новый тест ("19", "4", "etc")); tests.add (новый тест ("20", "5", "etc")); tests.add (новый тест ("20", "5", "и т. Д."));3. исходный код
Дерево. Ява
Пакет pers.kangxu.datautils.bean.tree; import java.util.arraylist; import java.util.list; import java.util.map; import com.alibaba.fastjson.json;/** * Tree todo <br> * * @author kangxu2 2017-1-7 * * * ** идентификатор; / *** Показать текст узла*/ private String Text; / ** * Статус узла, открытый закрытый */ private String state = "open"; / ** * Выбран ли узел true false */ private boolean cherced = false; / *** Атрибут узла*/ private list <map <string, object >> attributes; / *** Дети узла*/ частный список <tree <T>> kids = new ArrayList <tree <T >> (); / ** * родительский идентификатор */ private String parentId; / *** Есть ли родительский узел*/ private boolean iSparent = false; / *** Существует ли детский узел*/ private boolean ischildren = false; public String getId () {return id; } public void setId (String id) {this.id = id; } public String getText () {return Text; } public void setText (String Text) {this.Text = text; } public String getState () {return State; } public void setState (String state) {this.state = state; } public boolean ischecked () {return chered; } public void setchecked (boolean cherced) {this.checked = cherced; } public List <map <string, object >> getAttributes () {return attributes; } public void setAttributes (list <map <string, object >> attributes) {this.attributes = attributes; } public List <Tree <T >> getChildren () {return glides; } public void setChildren (список <tree <t >> дети) {this.children = дети; } public boolean iSparent () {return iSparent; } public void setParent (boolean iSparent) {this.Isparent = iSparent; } public Boolean Ischildren () {return Ischildren; } public void setChildren (логические ишильды) {this.ischildren = ischildren; } public String getParentId () {return parentId; } public void setParentId (String parentId) {this.parentid = parentId; } public Tree (идентификатор строки, строковый текст, состояние строки, логическое проверено, список <map <string, object >> атрибуты, список <tree <T>> дети, логический iSparent, логические ишильды, строка ParentId) {super (); this.id = id; this.text = text; this.state = состояние; this.cecked = проверить; this.attributes = атрибуты; this.Children = дети; this.isparent = iSparent; this.ischildren = ischildren; this.parentid = parentid; } public tree () {super (); } @Override public String toString () {return json.tojsonstring (this); }}BUILDTREE.Java
Package pers.kangxu.datautils.common.tree; import java.util.arraylist; import java.util.list; import pers.kangxu.datautils.bean.tree.tree;/** * @author kangxu2 2017-1-7 * * @param узлы * @return */ public static <t> tree <t> build (list <tree <t >> узлы) {if (nodes == null) {return null; } List <tree <T>> topNodes = new ArrayList <tree <T >> (); для (дерево <t> дети: узлы) {string pid = kids.getParentId (); if (pid == null || "" .equals (pid)) {topnodes.add (дети); продолжать; } for (tree <t> parent: nodes) {string id = parent.getid (); if (id! = null && id.equals (pid)) {parent.getChildren (). Add (Children); kids.setParent (True); parent.setchildren (True); продолжать; }}} Tree <t> root = новое дерево <t> (); if (topnodes.size () == 0) {root = topNodes.get (0); } else {root.setid ("-1"); root.setparentid (""); root.setParent (false); root.setchildren (true); root.setchecked (true); root.setchildren (TopNodes); root.settext ("Узел верхнего уровня"); } return root; }}BUILDTREETESTER.JAVA
Пакет pers.kangxu.datautils.test; import java.util.arraylist; import java.util.list; import pers.kangxu.datautils.bean.tree.tree; import pers.kangxu.datautils.common.tree.buildtre Деревья = новый ArrayList <tree <test>> (); Список <Test> tests = new ArrayList <Stest> (); tests.add (новый тест ("0", "", "обо мне")); tests.add (новый тест («1», «0», «Техническое обучение»)); tests.add (новый тест ("2", "0", "интерес")); tests.add (новый тест ("3", "1", "java")); tests.add (новый тест ("4", "1", "Oracle")); tests.add (новый тест ("5", "1", "Spring")); tests.add (новый тест ("6", "1", "Springmvc")); tests.add (новый тест ("7", "1", "fastdfs")); tests.add (новый тест ("8", "1", "linux")); tests.add (новый тест ("9", "2", "езда на велосипеде")); tests.add (новый тест («10», «2», «еда, питье и веселье»)); tests.add (новый тест ("11", "2", "Learning")); tests.add (новый тест ("12", "3", "String")); tests.add (новый тест ("13", "4", "sql")); tests.add (новый тест ("14", "5", "ioc")); tests.add (новый тест ("15", "5", "aop")); tests.add (новый тест ("16", "1", "и т. Д.")); tests.add (новый тест ("17", "2", "и т. Д.")); tests.add (новый тест ("18", "3", "и т. Д.")); tests.add (новый тест («19», «4», «и т. д.»); tests.add (новый тест ("20", "5", "и т. Д.")); Для (тест -тест: тесты) {tree <test> tree = новое дерево <Test> (); tree.setid (test.getid ()); tree.setParentid (test.getPid ()); tree.settext (test.getText ()); Деревья. Адд (дерево); } Tree <Stest> t = buildTree.build (деревья); System.out.println (t); }} Class Test {Private String Id; частная строка PID; частный строковый текст; public String getId () {return id; } public void setId (String id) {this.id = id; } public String getPid () {return pid; } public void setPid (String pid) {this.pid = pid; } public String getText () {return Text; } public void setText (String Text) {this.Text = text; } public Test (String Id, String pid, String Text) {super (); this.id = id; this.pid = pid; this.text = text; } public test () {super (); } @Override public String toString () {return "test [id =" + id + ", pid =" + pid + ", text =" + text + "]"; }}4. Результаты работы
Данные JSON:
{ "checked": true, "children": [ { "checked": false, "children": [ { "checked": false, "children": [ { "checked": false, "children": [ { "checked": false, "children": [ { "checked": false, "children": [], "id": "12", "parent": true, "parentId": "3", "state": "open", «Text»: «String»}, {«проверено»: false, «дети»: [], «id»: «18», «родитель»: true, «parentid»: «3», «State»: «open», «текст»: «и т. д.»}], «id»: «3», «Родитель»: «Правда»: «1»: «Open»: «open»: «open»: «open»: «java»: «java»: «Проверено»: false, «Дети»: [{«проверено»: false, «Дети»: [], «ID»: «13», «Родитель»: True, «ParentId»: «4», «Государство»: «Open», «Текст»: «SQL»}, {«Проверено»: False, «Дети»: [], «ID»: «19», «ParentId»: «ParentId»: «ParentId»: «ParentId»: «ParentId»: «ParentId»: «ParentId»: «ParentId»: «ParentId»: «ParentId»: «ParentId»: «ParentId»: «ParentId»: «ParentId»: «Opne»: «ParentId». «Текст»: «и т. д.»}], «id»: «4», «родитель»: true, «parentId»: «1», «состояние»: «open», «text»: «oracle»}, {«проверено»: false, «дети»: [{«Проверено»: false, «дети»: [], «id»: «14», «родитель»: «Правдис»: «5»: «5»: «5»: «5»: «5»: «5»: «5»: «5»: «5»: «5»: «5»: «Parentid»: «ParentId»: «ParentId»: «ParentId»: «ParentID «Текст»: «ioc»}, {«проверено»: false, «дети»: [], «id»: «15», «родитель»: true, «parentid»: «5», «State»: «open», «текст»: «aop»}, {«Проверено»: false, «дети»: [], «id»: «20», «родитель»: «Parentid»: «Parentid»: «Parentid»: «Parentid»: «Parentid»: «Parentid»: «Parentid»: «Parentid»: «Parentid»: «ParentId»: «ParentId»: «ParentId»: «ParentId «Текст»: «и т. д.»}], «id»: «5», «родитель»: true, «parentId»: «1», «состояние»: «open», «text»: «Spring»}, {«проверено»: false, «дети»: [], «id»: «6», «Родитель»: True, «ParentId»: «1», «Open»: «Open»: «Prent»: «Prent». «Проверено»: false, «дети»: [], «id»: «7», «родитель»: true, «parentId»: «1», «состояние»: «open», «text»: «fastDfs»}, {«проверено»: false, «дети»: [], «id»: «8», «родитель»: «true», «parentId»: «1», «open»: «opten»: «opect»: «:»: «opten»: «opten»: «:»: ":": ":", ":", ":": ",": ":", ":": ",", ",": ",": ",", ",". «Проверено»: false, «дети»: [], «id»: «16», «родитель»: true, «parentId»: «1», «состояние»: «open», «текст»: «и т. д.»}], «id»: «1», «Родитель»: True, «ParentId»: «0», «Государство»: «Открыть», «Текст»: «Техническое обучение»}. «Проверено»: false, «дети»: [], «id»: «9», «родитель»: true, «parentId»: «2», «State»: «Open», «Текст»: «Cycling»}, {«проверено»: False, «Дети»: [], «ID»: «10», «Родитель»: «Истинное», «Питерс»: «2»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыть»: «Открыто»: «Открыть»: «Открыто»: «Открыто»: «Открыто». }, {"проверено": false, "kids": [], "id": "11", "parent": true, "parentid": "2", "State": "open", "text": "Learning"}, {"проверено": false, "дети": [], "id": "17", «родитель": true ":" 2 ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ":": ". ], "id": "2", "parent": true, "parentId": "0", "state": "open", "text": "interest" } ], "id": "0", "parent": false, "parentId": "", "state": "open", "text": "about me" } ], "id": "-1", "parent": false, "parentId": "", "state": "open", "Текст": "верхний узел"}Выше приведено полное содержание метода Java для создания данных json структуры на основе содержания таблицы базы данных. Я надеюсь, что каждый сможет поддержать wulin.com ~