在Java中实现具有层次结构的列表
我在Java小任务中遇到了一个编程概念问题。我有一个Employee类,它有两个参数:ID和他的经理的ID。我还有班主任,这是我的员工的容器。现在,我想在树状层次结构中列出它们,如下所示:在Java中实现具有层次结构的列表,java,hierarchy,Java,Hierarchy,我在Java小任务中遇到了一个编程概念问题。我有一个Employee类,它有两个参数:ID和他的经理的ID。我还有班主任,这是我的员工的容器。现在,我想在树状层次结构中列出它们,如下所示: Dominik Sankowski |-Radosław Adamus | |- Łukasz Sturgulewski | |- Andrzej Albrecht |-Lidia Jackowska | |- Michał Paluch |-Szymon Grabowski | |- Wojciech Bi
Dominik Sankowski
|-Radosław Adamus
| |- Łukasz Sturgulewski
| |- Andrzej Albrecht
|-Lidia Jackowska
| |- Michał Paluch
|-Szymon Grabowski
| |- Wojciech Bieniecki
| |- Sebastian Stoliński
| |- Tomasz Węgliński
|-Jacek Kucharski
取决于谁是谁的老板
我试过用树状图,也试过复发,但我的头真的爆炸了,我就是做不好,我的大脑被阻塞了。有什么建议吗
编辑1:
到目前为止,我的代码是:
public class Staff {
//Integer - manager id, Employee - object
private ArrayList <Employee> employees;
public Staff(){
employees = new ArrayList<Employee>();
employees.add(new Employee(1, "Wojciech","Bieniecki", 15));
employees.add(new Employee(2, "Dariusz","Brzeziński", 18));
employees.add(new Employee(3, "Michał","Paluch", 19));
employees.add(new Employee(4, "Sebastian","Stoliński", 1));
employees.add(new Employee(5, "Tomasz","Węgliński", 1));
employees.add(new Employee(6, "Radosław","Adamus", 16));
employees.add(new Employee(7, "Andrzej","Albrecht", 11));
employees.add(new Employee(8, "Robert","Banasiak", 13));
employees.add(new Employee(9, "Tomasz","Koszmider", 10));
employees.add(new Employee(10, "Krzysztof","Strzecha", 16));
employees.add(new Employee(11, "Łukasz","Sturgulewski", 6));
employees.add(new Employee(12, "Piotr","Urbanek", 17));
employees.add(new Employee(13, "Radosław","Wajman", 16));
employees.add(new Employee(14, "Jacek","Wiślicki", 16));
employees.add(new Employee(15, "Szymon","Grabowski", 16));
employees.add(new Employee(16, "Dominik","Sankowski", 0));
employees.add(new Employee(17, "Jacek","Kucharski", 16));
employees.add(new Employee(18, "Piotr","Ostalczyk", 16));
employees.add(new Employee(19, "Lidia","Jackowska", 16));
}
public Employee convertIdToEmployee (int id)
{
for (int i=0; i<employees.size(); i++)
{
if(id == employees.get(i).getId())
{
return employees.get(i);
}
}
return null;
}
public Employee find(String familyName)
{
for (int i=0; i<employees.size(); i++)
{
if(familyName == employees.get(i).getFamilyName())
{
return employees.get(i);
}
}
return null;
}
public ArrayList<Employee> showSubordinates(Employee emp)
{
ArrayList <Employee> result = new ArrayList <Employee>();
for (int i=0; i<employees.size(); i++)
{
if(emp.getId() == employees.get(i).getManagerId())
{
result.add(employees.get(i));
}
}
return result.size() != 0 ? result : null;
}
public ArrayList<Employee> buildTree(ArrayList <Employee> subordinates){
ArrayList <Employee> result = new ArrayList <Employee>();
for(int i=0; i<subordinates.size();i++)
{
buildTree(showSubordinates(subordinates.get(i)));
result.add(subordinates.get(i));
}
return result;
}
public ArrayList<Employee> getEmployees() {
return employees;
}
public void setEmployees(ArrayList<Employee> employees) {
this.employees = employees;
}
@Override
public String toString()
{
return "";
}
}
Employee类只是一个具有getter和setter的数据持有者。我建议创建一个Employee类作为层次结构的顶层。经理可以从此Employee类继承。你可以有一份经理级员工名单,他们在他/她手下工作 用于打印层次结构。您可以在最高层的经理上调用print,递归地打印所有推荐他的员工,然后依次调用print
希望这有帮助。递归可能是打印整个层次结构的关键。您能添加到目前为止的代码吗?这是一个现有的。