0

Java アプリケーションでは、格納する構造が必要です。ノードと呼びましょう。他のノードとの関係の数です。たとえば、ノード A が B と 3 回関連付けられていることを知る必要があります。

これを実装する方法を考えて、この可能な解決策にたどり着きました。ノードをキーとして使用し、別のハッシュマップを値として使用するハッシュマップを作成します。このハッシュマップは、ノードをキー (例ではノード B) として格納し、関係の数を表す値として整数を格納します。

これについてあなたはどう思いますか?それは良いアプローチですか?

もしそうなら、私は質問があります。文字列を保存し、String.split 関数を適用した後にテキスト ファイルから取得したとします。ここで、最初のハッシュマップに「hello」を保存しますが、ファイルを処理した後、この文字列は 2 番目のハッシュマップの宛先ノードとして表示されます。これらの文字列は同じオブジェクトへの参照を持っていますか、それとも同じオブジェクトの複数のコピーを持っていますか?

4

1 に答える 1

1

最初の質問に関しては、私は似たようなことをしますが、違うことをします。Hashmap内部に aを作成する代わりに、次のようなHashmap新しいクラスを作成します。Relationship

public class NodeRelationship {
    private Node relatedNode;
    private int numOfRelations

    // Constructor + getters and setters
}

そして、マップを次のように定義します。Map<Node, List<NodeRelationship>>これは私には読みやすく (しかし、これは私だけかもしれません)、後で簡単に使用できるように思えます。たとえば、リストを反復し、メンバーparentを追加できる元のノードを知りたい場合などですNodeRelationshio

2 番目の質問については、オブジェクトの作成方法と、新しいオブジェクトを作成するか既存のオブジェクトを使用するかによって異なります。値(または私のソリューション)helloに入れるノードがあり、同じオブジェクトを使用して新しいキーを作成する場合、重複はありません。ノードが既に作成されていることを知る方法がない (または単に検索しない) 場合に、新しいノードを作成すると、オブジェクトが重複します。HashmapList

実際に各ノードがテキスト文字列から作成されている場合は、新しいMap<String, Node>ものを維持し、ファイルを読み取る過程で、このマップを維持し、新しいオブジェクトを作成する前にオブジェクトが存在するかどうかを確認できます。これはパフォーマンスのコストが非常に低く、テキストからのオブジェクトの構築が完了したら、マップを取り除くことができます。

于 2013-10-10T08:52:10.967 に答える