JS 中 :
var znodes = [{id : 0, pid : -1, name : "aaaa"}, {id : 1, pid : 0, name : "a"}, {id : 11, pid : 1, "a1"}, {id : 12, pid : 1, "a2"}, {id : 13, pid : 1, a3 "}, {id : 2, pid : 0, name : "b"}, {id : 21, pid : 2, name : "b1"}, {id : 22, pid : 2, name : "b2"}, {id : 23, pid : 2, 이름 : "b3"}, {id : 3, pid : 0, name : "c"}, 31, pid : 3, 3, 31, 31 : {id : 32, pid : 3, name : "c2"}, {id : 33, pid : 3, name : "c3"}, {id : 34, pid : 31, "x"}, {id : 35, pid : 31, "y"}, {id : 36, pid : 31, "z"}, {id : 37, pid : 36, 이름 : "z1123"}, {id : 38, pid : 37, name : "z123123123"}]; 함수 treemenu (a) {this.tree = a || []; this.groups = {};}; treemenu.prototype = {init : function (pid) {this.group (); 이 getdom (this.groups [pid]); }, group : function () {for (var i = 0; i <this.tree.length; i ++) {if (this.groups [this.tree [i] .pid]) {this.groups [this.tree [i] .pid] .push (this.tree [i]); } else {this.groups [this.tree [i] .pid] = []; this.groups [this.tree [i] .pid] .push (this.tree [i]); }}}, getDom : function (a) {if (! a) {return ''} var html = '/n <ul>/n'; for (var i = 0; i <a.length; i ++) {html+= '<li> <a href = "#">'+a [i] .name+'</a>'; html+= this.getdom (this.groups [a [i] .id]); html+= '</li>/n'; }; html+= '</ul>/n'; 반환 html; }}; var html = new treemenu (znodes) .init (0); alert (html);자바:
패키지 테스트; import java.util.arraylist; import java.util.comparator; import java.util.hashmap; import java.util.iterator; import java.util.list; import java.util.map; import java.util.set; import java.util.collections;/***/public multletree {horte java.util.list; import java.util.list; import java.util.list; import java.util.list; main (String [] args) {// 读取层次数据结果集列表 list datalist = virtualdatagenerator.getVirtualResult (); // 节点列表 ay (节点列表 节点列表 节点列表, 用于临时存储节点对象) Hashmap nodelist = new Hashmap (); // 노드 루트 = null; (iterator it = datalist.iterator (); it.hasnext ();) {map datarecord = (map) it.next (); 노드 노드 = 새 노드 (); node.id = (string) datarecord.get ( "id"); node.text = (string) datarecord.get ( "text"); node.parentid = (string) datarecord.get ( "parentid"); nodelist.put (node.id, 노드); } // 构造无序的多叉树 set entryset = nodelist.entryset (); for (iterator it = intrictset.iterator (); it.hasnext ();) {node node = (node) ((map.entry) it.next ()). getValue (); if (node.parentid == null || node.parentid.equals ( "")) {root = node; } else {((node) nodelist.get (node.parentid)). addChild (Node); }} //} json 字符串 字符串 字符串 字符串 字符串 字符串 字符串 out.println (root.toString ()); // 对多叉树进行横向排序 root.sortChildren (); // 输出有序的树形菜单的 json 输出有序的树形菜单的 system.out.println (root.toString ()); // 程序输出结果如下 ay (程序输出结果如下)) (格式化后的结果) : // {// id : '100000', // 텍스트 : '廊坊银行总行', // 어린이 : [// {// id : '110000', // 텍스트 : '廊坊分行', // 어린이 : [// {// id : '113000', // text : // letm : //}, //}, //} '111000', // text : '廊坊银行金光道支行', // leaf : true //}, // {// id : '112000', // 텍스트 : '廊坊银行解放道支行', // children : [// {// id : '112200', // 텍스트 : '廊坊银行三大街支行', // leaf : true //}, // {// id : '112100', // ' ^', // // } //] //} //] //} //] //} //} // 程序输出结果如下 ay (有序的树形菜单) 찾고} : // {// id : '100000', // 텍스트 : '廊坊银行总行', // 어린이 : [// {// id : '110000', // children : [// id : '111000', // children : [// id : // id : // 'leaf', // Leaf : True //}, // {// id : '112000', // text : '廊坊银行解放道支行', // children : [// {// id : '112100', // text : '廊坊银行广阳道支行', // 잎 : true // {// id : '112200', // text : ', //}, //} // {// id : '113000', // 텍스트 : '廊坊银行开发区支行', // Leaf : true //} //] //} //] //}}}}}}}}}}}}}} {/***节点编号*/public string id; / ** * 节点内容 */ public String 텍스트; / ** * 父节点编号 */ public string parentid; / ** * 孩子节点列表 */ 사립 어린이 어린이 = 새로운 어린이 (); // 先序遍历 先序遍历, 先序遍历 json 字符串 public string toString () {문자열 result = "{" + "id : ' + id +"' " +", text : ' " + text +"' "; if (children! = null && children.getsize ()! = 0) {result + = ", children :" + children.toString (); } else {result += ", Leaf : True"; } return result + "}"; } // 兄弟节点横向排序 public void sortchildren () {if (children! = null && children.getSize ()! = 0) {children.sortChildren (); }} //} public void addChild (노드 노드) {this.children.addchild (노드); }}/*** 孩子列表类*/class children {private list list = new arraylist (); public int getsize () {return list.size (); } public void addChild (노드 노드) {list.add (노드); } // 拼接孩子节点的 json 字符串 public String toString () {문자열 result = "["; for (iterator it = list.iterator (); it.hasnext ();) {result += ((node) it.next ()). toString (); 결과 += ","; } result = result.substring (0, result.length () -1); 결과 += "]"; 반환 결과; } // 孩子节点排序 public void SortChildren () {// 对本层节点进行排序 对本层节点进行排序 // 可根据不同的排序属性 可根据不同的排序属性, 传入不同的比较器 传入不同的比较器, 这里传入 id 比较器 collections.sort (list, new nodeidComparator ()); // (iterator it = list.iterator (); it.hasnext ();) {((Node) it.next ()). SortChildren (); }}}}/** * 节点比较器 */클래스 nodeIdCocparator는 비교기를 구현합니다 {// 按照节点编号比较 public int compar (object o1, object o2) {int j1 = integer.parseint (((node) o1)) .id); int j2 = integer.parseint (((node) o2) .id); return (j1 <j2? -1 : (j1 == j2? 0 : 1)); }}/** * 构造虚拟的层次数据 */class virtualDatagenerator {// 构造无序的结果集列表, 实际应用中, 该数据应该从数据库中查询获得; public static list getVirtualResult () {list datalist = new arrayList (); HASHMAP DATARECORD1 = NEW HASHMAP (); DataRecord1.put ( "id", "112000"); DataRecord1.put ( "텍스트", "廊坊银行解放道支行"); DataRecord1.put ( "parentid", "110000"); HASHMAP DATARECORD2 = NEW HASHMAP (); DataRecord2.put ( "id", "112200"); DataRecord2.put ( "텍스트", "廊坊银行三大街支行"); DataRecord2.put ( "parentid", "112000"); HASHMAP DATARECORD3 = NEW HASHMAP (); DataRecord3.put ( "id", "112100"); DataRecord3.put ( "텍스트", "廊坊银行广阳道支行"); DataRecord3.put ( "parentid", "112000"); HASHMAP DATARECORD4 = NEW HASHMAP (); DataRecord4.put ( "id", "113000"); DataRecord4.put ( "text", "廊坊银行开发区支行"); DataRecord4.put ( "parentid", "110000"); HASHMAP DATARECORD5 = NEW HASHMAP (); DataRecord5.put ( "id", "100000"); DataRecord5.put ( "text", "廊坊银行总行"); DataRecord5.put ( "parentid", ""); HASHMAP DATARECORD6 = NEW HASHMAP (); DataRecord6.put ( "id", "110000"); DataRecord6.put ( "텍스트", "廊坊分行"); DataRecord6.put ( "parentid", "100000"); Hashmap DataRecord7 = New Hashmap (); DataRecord7.put ( "id", "111000"); DataRecord7.put ( "텍스트", "廊坊银行金光道支行"); DataRecord7.put ( "parentid", "110000"); Datalist.add (DataRecord1); Datalist.add (DataRecord2); datalist.add (datarecord3); datalist.add (datarecord4); Datalist.add (DataRecord5); Datalist.add (DataRecord6); Datalist.add (DataRecord7); 반환 데이터리스트; }}以上这篇 Java a js 中实现无限层级的树形结构方法 (类似递归 类似递归) 就是小编分享给大家的全部内容了, 希望能给大家一个参考, 也希望大家多多支持武林网。 也希望大家多多支持武林网。