1. 활용 시나리오
조직 구조 트리, 일반적으로 코드 (코드), PCODE (상단 코드), 이름 (조직 이름)과 같은 필드를 포함한 조직 구조 테이블이 있습니다.
2. 데이터 구성 데이터 (다음 데이터는 조직 데이터가 아니라 순전히 데이터입니다)
List <tree <test >> trees = new ArrayList <tree <test >> (); tests.Add (새로운 테스트 ( "0", "", "About Me"); tests.Add (새로운 테스트 ( "1", "0", "기술적 학습"); Aadds.Add (새로운 테스트 ( "2", "0", "관심"); 새로운 테스트 ( "3", "", 1 ", 1" "Java"); Adds.Add (새로운 테스트 ( "4", "1", "Oracle"); tests.Add (새로운 테스트 ( "5", "1", "Spring")); tests.add (새로운 테스트 ( "6", "1", "SpringMVC"); tests.Add ( "7", "1", ",", ",", ",", "8 번 테스트"); "1", "linux"); tests.add (new test ( "9", "2", "cycling")); tests.add ( "10", "2", "Eat, 음료, 놀이"); Adds.add ( "11", "2", "학습"); tests.add ( "12", "3"); "4", "sql"); tests.add (new test ( "14", "5", "ioc"); tests.add (새로운 테스트 ( "15", "5", "aop")); Adds.add (새로운 테스트 ( "16", "1", "등"); tests.Add ( "17", "2", ",") "etc"); tests.add (new test ( "19", "4", "등"); tests.add (새로운 테스트 ( "20", "5", "등"); tests.Add (새로운 테스트 ( "20", "5", "등"); ADD (새 시험 ( "20", "5", "등"); Tests.ADD (New Test ( "18", ",", " "etc"); tests.add (new test ( "19", "4", "etc"); tests.add (새로운 테스트 ( "20", "5", "등"); tests.add (new test ( "20", "5", "등");
3. 소스 코드
Tree.java
packing pers.kangxu.datautils.bean.tree; import java.util.arraylist; import java.util.list; import java.util.map; import com.alibaba.fastjson.json;/** * tredo <br> * @author kangxu2 2017-1-7 */public class tree <t>/ * nod and {node and and extry class tree ID; / *** 노드 텍스트 표시*/ 개인 문자열 텍스트; / ** * 노드 상태, 열기 폐쇄 */ 개인 문자열 state = "Open"; / ** * 노드가 선택되었는지 확인 거짓 */ 개인 부울 checked = false; / *** 노드 속성*/ private list <map <string, object >> 속성; / *** 노드의 어린이*/ 개인 목록 <tree <t >> children = new Arraylist <tree <t >> (); / ** * 부모 ID */ private string parentid; / *** 부모 노드가 있는지*/ private boolean isparent = false; / *** 어린이 노드가 있는지*/ 개인 부울 ischildren = false; public String getId () {return id; } public void setId (String id) {this.id = id; } public String getText () {return 텍스트; } public void setText (문자열 텍스트) {this.text = 텍스트; } public String getState () {return state; } public void setstate (문자열 상태) {this.state = state; } public boolean ischecked () {반환 확인; } public void setChecked (부울 점검) {this.Checked = Checked; } public list <map <string, object >> getAttributes () {return attributes; } public void stattributes (list <map <string, 객체 >> 속성) {this.attributes = attributes; } public list <tree <t >> getchildren () {Return Children; } public void setchildren (list <tree <t >> children) {this.children = children; } public boolean isparent () {return isparent; } public void setparent (부울 isparent) {this.isparent = isparent; } public boolean ischildren () {리턴 ischildren; } public void setchildren (부울 ischildren) {this.ischildren = ischildren; } public String getParentId () {return parentid; } public void setparentId (String ParentID) {this.parentId = parentid; } public tree (문자열 ID, 문자열 텍스트, 문자열 상태, 부울 점검, List <map <문자열, 개체 >> 속성, 목록 <tree <t >> 어린이, 부울 isparent, 부울 일인, 문자열 parentid) {super (); this.id = id; this.text = 텍스트; this.state = state; this.checked = 확인; 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
pasking pers.kangxu.datautils.common.tree; import java.util.arraylist; import java.util.list; import pers.kangxu.datautils.bean.tree.tree;/** * import tree * todo * <br> * @author kangxu2 2017-1-7 */public classtree {/ * <brdo * * <brdo * * <bro * <bro * <brdo * */public classment tree *. @author kangxu2 2017-1-7 * * @param 노드 * @return */ public static <t> tree <t> 빌드 (list <tree <t >> 노드) {if (nodes == null) {return null; } list <tree <t >> topnodes = new arraylist <tree <t >> (); for (tree <t> children : 노드) {String pid = children.getParentId (); if (pid == null || "".equals (pid)) {topnodes.add (children); 계속하다; } for (tree <t> parent : nodes) {String id = parent.getId (); if (id! = null && id.equals (pid)) {parent.getchildren (). add (children); children.setparent (true); 부모 .Setchildren (true); 계속하다; }}} tree <t> root = new Tree <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 ( "최상위 노드"); } 반환 루트; }}BuildTreetester.java
packing pers.kangxu.datautils.test; import java.util.arraylist; import java.util.list; import pers.kangxu.datautil.bean.tree.tree; import pers.kangxu.datautils.common.tree.buildtree; public statteetester {arg <] {test <] {tex <] trees = new arraylist <tree <test >> (); 목록 <test> tests = new arraylist <test> (); tests.add (new test ( "0", "", "Inven)); tests.add (new test ( "1", "0", "기술 학습")); tests.add (New Test ( "2", "0", "관심")); tests.add (New Test ( "3", "1", "Java")); tests.add (New Test ( "4", "1", "Oracle")); tests.add (New Test ( "5", "1", "Spring")); tests.add (new test ( "6", "1", "springmvc")); tests.add (new test ( "7", "1", "fastdfs")); tests.add (New Test ( "8", "1", "Linux")); tests.add (New Test ( "9", "2", "Cycling")); tests.add (New Test ( "10", "2", "식사, 음주 및 재미있는 재미")); tests.add (New Test ( "11", "2", "Learning")); tests.add (New Test ( "12", "3", "String")); tests.add (New Test ( "13", "4", "SQL")); tests.add (New Test ( "14", "5", "IOC")); tests.add (New Test ( "15", "5", "AOP")); tests.add (new test ( "16", "1", "등"); tests.add (new test ( "17", "2", "등"); tests.add (New Test ( "18", "3", "등"); tests.add (new test ( "19", "4", "등"); tests.add (new test ( "20", "5", "etc")); for (test test : tests) {tree <test> tree = new tree <test> (); tree.setId (test.getId ()); tree.setparentId (test.getPid ()); tree.settext (test.getText ()); 나무 .add (나무); } tree <test> t = buildtree.build (trees); System.out.println (t); }} 클래스 테스트 {개인 문자열 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 텍스트; } public void setText (문자열 텍스트) {this.text = 텍스트; } public test (문자열 ID, 문자열 pid, 문자열 텍스트) {super (); this.id = id; this.pid = pid; this.text = 텍스트; } public test () {super (); } @override public String toString () {return "test [id =" + id + ", pid =" + pid + ", text =" + text + "]; }}4. 운영 결과
JSON 데이터 :
{ "Checked": "True": [{wecond ":"Children, "Children": "Children": [{ "Checked": False, "Children": [{ "Checked": False, "Children": [{ "Chews": "Children": [ "Checked": "Children": [], "Id": "Parent": "" "," "", "" "," "" "text": "string"}, { "Checked": "Children,"Children ": [],"id ":"18 ","부모 ":"parentid ":"3 ","State ":"Open ","Text ":"etc "}],"ID ":"3 ","parentid ":"1 ","상태 ":"텍스트 ","java "" " false, "children": [{cheffed ": false,"children ": [],"], "id": "13", "parent": "4", "4", "4", "state": "open", "text": "sql"}, { "Checked": "children": [], "id": ""parent ":" "4", "", "", "", "", "", "", "", "", "", "", "", "" "etc"}], "id": "4", "parent": "parentid": "1", "state": "open", "text": "Oracle"}, { "checked": false, "children": [{ "확인": "children": [], "id": "14", "parentid", "state" "" "" "" "" "" "" "" "" "" "" "" " }, { "확인": 거짓 ":"어린이 ":"ID ":"15 ","Parent ":"True, "Parentid": "5", "State": "Open", "Text": "AOP"}, {False, "Children": [], "id": "20", "Parentid": "State" "", "" "" "" "" "," "," "," "," "," "," "," "," "," " ], "ID": "5", "ParentID": "1", "State": "Open", "Text": "Spring"}, { "Checked": False, "Children": [], "ID": "6", "Parent": "ParentID": "1", "State": "Open", ""Spring "},"SPING "}," ":" ":" ":" "": [], "id": "7", "parent": true ","parentid ":"1 ","state ":"open ","text ":"fastdfs "}, {"checked ": false,"children ": [],"id ":"8 ","부모 ":"parentid ":"1 ","state ":"intex ":"{{ "": ""} "": [], "id": "16", "parent": "parentid": "1", "state": "open", "text": "etc"}], "id": "1", "parent": "parentid": "0", "state": "텍스트": "기술적 학습"}, "children": "{": "" " "ID": "9", "ParentId": "2", "2", "State": "Open", "Text": "Cycling"}, { "Checked": False, "Children": [], "ID": "10", "Parent": "ParentID": "2", "State": "Open", "Sucle": "{" "" "" "" "" "" "" "" "" "" ":" [], "ID": "11", "Parent": "2", "State": "Open", "Text": "Learning"}, { "Checked": False, "Children": [], "ID": "17", "부모": "ParentID": "2", "State": "Text": "et}]," "" "", "" "", "" "," "", "" "," "", "", "", "", "" "," "," "," "," "," "," "," "", "", "", "e. "parentid": "0", "state": "open", "text": "interver"}], "id": "0", "0", "부모": "parentid": "", "state": "open", "text": "affe"}], "id": "-1", "false": "parentid": ""in 텍스트 ","텍스트 "위는 데이터베이스 테이블의 내용을 기반으로 트리 구조 JSON 데이터를 생성하는 Java 방법의 전체 내용입니다. 모두가 wulin.com을 지원할 수 있기를 바랍니다