0

次のような入力があります-</p>

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

そして、出力が次のようになりたい-</p>

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

これは、Oracle の階層クエリによって実現できることを知っています。ただし、データはフラット ファイルから取得されるため、ステージングは​​行いたくありません。Javaを使用してどのようにそれを行うことができるかについてのアイデア。2 つの HashMap を使用して、いくつかのことを行うことができました –</p>

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

ただし、フルパスを出力できませんでした。誰でもJavaを使用してそれを行うのを手伝ってもらえますか.

4

2 に答える 2

0

idフィールド、name、を持つ Employee というクラスを作成しますmanagerId。これらのすべての従業員をMap<Integer, Employee>、キーが従業員の ID であり、値がこの ID を持つ従業員である に格納します。

次に、各従業員について、マップでマネージャーを再帰的に検索することで、すべての管理チェーンを簡単に取得できます。

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

残りは解析とフォーマットです。

于 2013-03-01T07:15:43.800 に答える