Java的递归map遍历

package com.lanxck.cyc;

//封装的一个类。

public class Entity {
private Integer id;
private Integer pid;
private String name;



public Entity(Integer id, Integer pid, String name) {
    super();
    this.id = id;
    this.pid = pid;
    this.name = name;
}
public Integer getId() {
    return id;
}
public void setId(Integer id) {
    this.id = id;
}
public Integer getPid() {
    return pid;
}
public void setPid(Integer pid) {
    this.pid = pid;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}


}

===================华丽的分割线=====================
package com.lanxck.cyc;

import java.util.HashMap;
import java.util.Map;

public class TestTree {
//新建的一个map
    public Map<Integer, Entity> map = new HashMap<Integer, Entity>();


     //来写一个方法存放数据的

    public Map<Integer, Entity> GetMap() { 


                  括号的参数 一参:id 二参:pid 三参:名字

        Entity entity0 = new Entity(1, 0, "公司");
        map.put(entity0.getId(), entity0);

        Entity entity1 = new Entity(2, 1, "部门1");
        map.put(entity1.getId(), entity1);

        Entity entity2 = new Entity(3, 1, "部门2");
        map.put(entity2.getId(), entity2);

        Entity entity8 = new Entity(9, 3, "员工2");
        map.put(entity8.getId(), entity8);

        Entity entity9 = new Entity(10, 3, "员工3");
        map.put(entity9.getId(), entity9);

        Entity entity10 = new Entity(11, 7, "员工4");
        map.put(entity10.getId(), entity10);

        Entity entity3 = new Entity(4, 2, "组长1");
        map.put(entity3.getId(), entity3);

        Entity entity4 = new Entity(5, 2, "组长2");
        map.put(entity4.getId(), entity4);

        Entity entity5 = new Entity(6, 3, "组长3");
        map.put(entity5.getId(), entity5);

        Entity entity6 = new Entity(7, 3, "组长4");
        map.put(entity6.getId(), entity6);

        Entity entity7 = new Entity(8, 4, "员工1");
        map.put(entity7.getId(), entity7);

        return map;
    }
                     =========重点方法==========
                            参数是父类的
    public void getChild(Entity entity) {
        // 新建一個新的容器
    Map<Integer, Entity> mapChild = new HashMap<Integer, Entity>();
        //进行遍历 
        for (Entity en : mapChild.values()) {
            // 如果Pid==id那麼就是父子關係
            if (en.getPid() == entity.getId()) {
                //这里的打印只是一个测试
                System.out.println(en.getName());
                // 调用自己继续进行子类的查找
                getChild(en);
            }
        }

    }
==================================================================  
 //测试:
    public static void main(String[] args) {

        TestTree tree = new TestTree();

        tree.GetMap();//初始化方法不然打印不出来

        for (Entity en : tree.map.values()) {

            System.out.println(en.getName());
            tree.getChild(en);
        }

    }

}



打印结果如下:
============================================================


//先遍历兄弟在继续找子类
公司
部门1
部门2
组长1
组长2
组长3
组长4
员工1
员工2
员工3
员工4

    原文作者:曹曹曹一晨
    原文地址: https://blog.csdn.net/weixin_37494917/article/details/69391841
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞