【发布时间】:2019-05-08 09:50:09
【问题描述】:
考虑一下表格,
+--------------+-------------------+
| managerId | ReportingManagerId|
+--------------|-------------------|
| 1 | null |
| 2 | null |
| 3 | 1 |
| 4 | 1 |
| 5 | 3 |
| 4 | 5 |
| 8 | 4 |
+--------------+-------------------+
现在,当我通过 ManagerId 1 时,我如何获取所有这些 managerId。我应该得到所有这些经理的列表,因为他们直接或间接地向 1 报告。 如何借助 java 中的递归来实现这一点?
public List<Manager> getAllSubManagers(Manager manager) {
List<Manager> subManagers = ManagerHierarchyRepository.findByReportingManager(manager).stream()
.map(ManagerHierarchy::getmanager).collect(Collectors.toList());
List<Manager> newSubManagers = new ArrayList<>();
if (!subManagers.isEmpty()) {
for (int i = 0; i < subManagers.size(); i++) {
newSubManagers = getAllSubManagers(subManager.get(i));
}
subManagers.addAll(newManagers);
}
return subManagers;
}
请检查上面的代码有什么问题。 当我通过 id 1 的经理时的预期结果:应该有 ids:3,4,5,6,8 的经理
【问题讨论】:
-
确实根据您的输入表(如上所示)理解了您的问题。你能提供更多信息吗?
-
什么不起作用?