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
Java的递归map遍历
原文作者:曹曹曹一晨
原文地址: https://blog.csdn.net/weixin_37494917/article/details/69391841
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/weixin_37494917/article/details/69391841
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。