如何创建一个有效的递归函数 - 将采用一个输入馈送 - 可能是1000行的长度。进入压缩数组。递归函数需要进行某种查找来确定当前员工ID是否有经理。递归Java数据结构 - 创建一个家族树的数组
我试图建立一个应用程序,可能需要在数组中的整个关系管理树。
我需要计算一个方法来创建一个递归函数,通过输入数据源将其映射到整理后的输出数组。
//the input data may look something like this
[{
"employeeId": "A1",
"managerId": "B1",
"employeeRole": "Sales0",
"managerRole": "Sales1"
}, {
"employeeId": "B1",
"managerId": "C1",
"employeeRole": "Sales1",
"managerRole": "Sales2"
}, {
"employeeId": "C1",
"managerId": "D1",
"employeeRole": "Sales2",
"managerRole": "Sales3"
}, {
"employeeId": "D1",
"managerId": "",
"employeeRole": "Sales3",
"managerRole": "Sales4"
}]
//create a final output array like this
[
"level1id": "A1",
"level2id": "B1",
"level3id": "C1",
"level4id": "D1",
]
在这个阶段的裸骨pseduo代码我是这样的
void myMethod(String employeeId, String[] rawData, Map < String, String > dataMap) {
//employeeId -- child id
//rawData - from feed
//dataMap - the array being built to contain ALL relationships from grand child, parent, grandparent.
getManager(employeeId, rawData) {
//find the manager of the current employeeid
//managerData[0] - manager id
//managerData[1] - manager role
return managerData;
}
managerData = getManager(employeeId, rawData);
managerId = managerData[0];
managerRole = managerData[1];
dataMap.put(managerData[1], managerData[0]);
// like [{"customerLevel1" : "SKDOL2"}]
//if there is no manager id - the grandparent manager has been found
if (managerId !== null)
return;
else {
//this employeeid has a manager above them - loop through again until the grandparent is found (employee id with no manager)
myMethod(managerId, rawData, dataMap);
return;
}
}
哦,这是一个很好的项目。你有什么问题? – 2015-04-02 14:42:34
问题是 - 我如何才能有效地将输入数据转换为压缩数组。 – 2015-04-02 14:43:17
所以说在你的问题。如果您还没有阅读[如何提问],请阅读(http://stackoverflow.com/help/how-to-ask);这太宽了,因为你只是要求我们为你提供代码。 – 2015-04-02 14:44:30