2013-03-01 150 views
0

我有一個像輸入 -通過遍歷父子關係用java

emp_id,emp_name,manageremp_id 
1,A, 
2,B,1 
4,C,1 
3,F,4 
5,E,2 

而且我想輸出是一樣 -

1,A, 
2,B,/A/B 
4,C,/A/C 
3,F,/A/C/F 
5,E,A/B/E 

我知道這可以通過Oracle層次查詢來實現。但是,數據來自平面文件,我們不想進行分段。任何關於如何使用java來做到這一點的想法。 使用兩個HashMap的,我能夠做一些,直到 -

1,A 
2,B,A 
4,C,A 
3,F,C 

不過,我是不是能夠打印完整路徑。任何人都可以請幫助我使用java來做到這一點。

回答

0

創建一個名爲Employee的類,其字段爲id,name,managerId。將所有這些員工存儲在Map<Integer, Employee>中,其中密鑰是員工的ID,值是具有此ID的員工。

然後爲每個員工,你可以很容易地在地圖recusrsively仰視他的經理讓他所有的管理鏈:

public void fillManagementChain(Deque<Employee> chain, Employee employee) { 
    chain.addFirst(employee); 
    if (employee.getManagerId() != null) { 
     Employee manager = employeesById.get(employee.getManagerId()); 
     fillManagementChain(chain, manager); 
    } 
} 

其餘部分解析和格式化。