非递归方式线性结构转换为树型结构(zTree核心)

来源:互联网 发布:沈阳seo搜索优化软件 编辑:程序博客网 时间:2024/05/16 18:48

import java.util.List;public class Node {    /**     * 当前节点     */    private String id;    /**     * 当前名称     */    private String nm;    /**     * 父节点     */    private String pid;    /**     * 子节点集合     */    private List<Node> sn;    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getNm() {        return nm;    }    public void setNm(String nm) {        this.nm = nm;    }    public String getPid() {        return pid;    }    public void setPid(String pid) {        this.pid = pid;    }    public List<Node> getSn() {        return sn;    }    public void setSn(List<Node> sn) {        this.sn = sn;    }    @Override    public String toString() {        return "Node{" +                "id='" + id + '\'' +                ", nm='" + nm + '\'' +                ", pid='" + pid + '\'' +                ", sn=" + sn +                '}';    }}




 @Test    public void testLineTypeTraslateTree(){        String jsonStr = "[{\"id\":\"1\",\"pid\":\"0\",\"nm\":\"水果\"},{\"id\":\"11\",\"pid\":\"1\",\"nm\":\"苹果\"}," +                "{\"id\":\"12\",\"pid\":\"1\",\"nm\":\"橘子\"},{\"id\":\"111\",\"pid\":\"11\",\"nm\":\"富士山品牌\"}]";        JSONArray jsonArray = JSONArray.fromObject(jsonStr);        List<Node> nodes = JSONArray.toList(jsonArray, Node.class);        System.out.println(nodes.toString());        int len = nodes.size(), i = 0, j = 0;        Map<String, Node> nodeMap = new HashMap<String, Node>(len);        for (; i < len; i++) {            nodeMap.put(nodes.get(i).getId(), nodes.get(i));        }        List<Node> result = new ArrayList<Node>(len);        for (; j < len; j++) {            Node curNode = nodes.get(j), parentNode = nodeMap.get(curNode.getPid());            if (parentNode == null) {                result.add(curNode);            } else {                if (parentNode.getSn() == null) {                    parentNode.setSn(new ArrayList<Node>());                }                parentNode.getSn().add(curNode);            }        }        System.out.println(result);    }


0 0
原创粉丝点击