Java 8ストリームを調べています。Java 8ストリームを使用してTreeデータモデルを構築することは可能ですか
私は現在、各レコードが親子関係を記述するファイルをストリーミングすることによって古典的なツリー構造を構築しようとしています。
私は私のソリューションは、以下の例に似ている入力データレコードからツリーを構築できるようにしたいと思います: -
Parent A - Child B
Parent A - Child C
Parent A - Child D
Parent A - Child E
Parent B - Child F
Parent B - Child G
Parent C - Child H
Parent D - Child I
Parent G - Child J
私は例えばLinkedHashMap<String, List<String>>
を構築するためにどちらかの希望
A - B, C, D, E
B - F, G
C - H
D - I
G - J
で終わる私が手に最も近い
Map<String, List<String>> map = stream.sorted().map(line -> line.split("-")).flatMap(line -> Arrays.stream(line)).collect(Collectors.toMap(Function.identity(), Arrays::asList));
それとも
public class Node {
private final String name;
private Node parent;
private List<Node> children = new LinkedList<>();
}
次Node
値オブジェクトは、すべてのツリーノードを作成し使用して重複キーとし、フル装備子供ノードリストで失敗します私の入力ファイルのストリームから直接。
あなたの最初の例では、より多くの木よりも複数の値を持つマップのようなものです。あなたは何を目指していますか?あなたの2番目の例に似たマルチマップまたはツリー構造ですか?ツリー構造を目指す場合、入力データは実際に木のような構造(例えば単一のルートノード、接続された非循環型)を保証しますか? –
@NándorElődFekete複数値のマップまたはツリーのいずれかが私の要件を満たします。私のファイル入力データは、単一のルートノードと動的な子ノードの数を持つ古典的なマルチノードマップを保証します。 – Hector