zoukankan      html  css  js  c++  java
  • 构建一个时间复杂度为O(n)的目录树

    public class TreeTest{

    public static void test(Multimap<String, TestTreeBean> myMultimap,TestTreeBean bean){
    // 1.获取子节点
    List<TestTreeBean> childList = (List<TestTreeBean>) myMultimap.get(bean.getId());
    // 2.如果子节点已经没有数据跳出循环
    if(childList.size()==0){
    return;
    }else{
    // 3.遍历子节点
    for (TestTreeBean testTreeBean : childList) {
    // 递归当前节点是否有子节点
    test(myMultimap, testTreeBean);
    }
    // 4.构造子节点
    bean.setBean(childList);
    }

    }

    public static void main(String[] args) throws Exception {
    Multimap<String, TestTreeBean> myMultimap = ArrayListMultimap.create();
    List<TestTreeBean> list = new ArrayList<TestTreeBean>();
    // 1. 创造一份模拟数据
    list.add(new TestTreeBean("1", "0"));// 跟节点
    list.add(new TestTreeBean("2", "1"));
    list.add(new TestTreeBean("3", "1"));
    list.add(new TestTreeBean("4", "2"));
    list.add(new TestTreeBean("5", "2"));
    list.add(new TestTreeBean("6", "3"));
    // 2. 构造一个myMultimap父节点为key,myMultimap是键可以重复的数据结构,谷歌guava提供
    for (TestTreeBean testTreeBean : list) {
    myMultimap.put(testTreeBean.getPid(), testTreeBean);
    }
    // 3. 构造一个根节点,次节点可以为任意节点,为了获取此节点下的数据
    TestTreeBean bean = new TestTreeBean("1", "0", null);
    // 4. 递归构造目录树
    test(myMultimap, bean);
    System.out.println(JSON.toJSON(bean));
    }
    }

    public class TestTreeBean {
    private String id;

    private String pid;

    private List<TestTreeBean> bean;

    public TestTreeBean(String id, String pid) {
    super();
    this.id = id;
    this.pid = pid;
    }

    public TestTreeBean(String id, String pid, List<TestTreeBean> bean) {
    super();
    this.id = id;
    this.pid = pid;
    this.bean = bean;
    }

    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 List<TestTreeBean> getBean() {
    return bean;
    }

    public void setBean(List<TestTreeBean> bean) {
    this.bean = bean;
    }

    @Override
    public String toString() {
    return "TestTreeBean [id=" + id + ", pid=" + pid + ", bean=" + bean + "]";
    }

  • 相关阅读:
    VI服务器
    LabVIEW编程技巧:网络通信中如何获取计算机名称、IP地址等信息
    Labview 局部变量
    TL431的几种常用用法
    s8550引脚图与电路图汇总分析
    齐二TK6916/20/26/32系列数控落地铣镗床简介8
    VBA Format函数 自定义格式中 0/#的区别
    [Excel VBA] Shape.Type属性名称及对应值列表
    如何另存(保存)不含宏
    我想一次性选择(或复制)工作簿中的多张表到另一工作簿
  • 原文地址:https://www.cnblogs.com/btdxqz/p/6837535.html
Copyright © 2011-2022 走看看