マップに渡したクラスインスタンスをキーJavaScriptとして参照するにはどうすればよいですか?

パンプキンブレス

Mapを隣接リストとして使用してグラフクラスを実装しています。グラフ内の各ノードを表すために使用している単純なクラスVertexを使用しています。

export class Vertex {
    constructor(value) {
        if (value) this.value = value;
        else throw new Error("Value must be specified");
    }

    getValue() {
        return this.value;
    }

    setValue(value) {
        if (value) this.value = value;
        else throw new Error("Value must be specified");
    }
}

次に、グラフクラスで、頂点とエッジを追加するためのコンストラクターと2つのメソッドを実装しました。

export class UndirectedGraph {
    constructor() {
        this.adjacencyList = new Map();
    }

    addVertex(value) {
        if (value) {
            const vertex = new Vertex(value);
            this.adjacencyList.set(vertex, []);
        }
    }

    addEdge(to, from) {
        if (
            !to ||
            !from ||
            !(to.constructor === Vertex && from.constructor === Vertex)
        ) {
            throw new Error("Arguments must be of type Vertex");
        }
        if (
            !this.adjacencyList.get(to) ||
            !this.adjacencyList.get(from)
        ) {
            throw new Error(
                "Both arguments must already be nodes in this undirected graph"
            );
        }
        this.adjacencyList.get(to).push(from);
        this.adjacencyList.get(from).push(to);
    }

    getAdjacencyList() {
        return this.adjacencyList;
    }
}

次に、addEdge()関数を呼び出して、Vertexタイプの2つのインスタンス間にエッジを作成します。

const graph = new UndirectedGraph();
graph.addVertex("A");
graph.addVertex("B");
graph.addVertex("B");
graph.addEdge(..., ...);

addEdge()「A」と「B」の特定のインスタンスの間にエッジを作成するには、関数に何を渡しますか?参照できる頂点インスタンスの変数がありません。

グラフに名前などの重複する値を格納できるようにしたいので、クラスインスタンスを使用するのは当然の選択のようですが、クラスインスタンス内でクラスインスタンスを検索する方法がわからないため、含まれている値にアクセスする方法に固執しています。マップすなわちgraph.getAdjacencyList().get(...)すべての助けに感謝

ベルギ

あなたの考えるaddVertex方法を作成しVertex、インスタンスとaddEdgeパラメータとしてメソッド期待していることは非常にインスタンスを、あなたは、これらのメソッドの呼び出し側が利用できるようにする必要があり-によってreturnそれをINGの。

…
addVertex(value) {
    if (value) {
        const vertex = new Vertex(value);
        this.adjacencyList.set(vertex, []);
        return vertex;
    }
    // else throw new Error("no value given")?
}
…

その後、あなたはそれを次のように使用することができます

const graph = new UndirectedGraph();
const vertex1 = graph.addVertex("A");
const vertex2 = graph.addVertex("B");
const vertex3 = graph.addVertex("B");
graph.addEdge(vertex1, vertex2);
graph.addEdge(vertex1, vertex3);
graph.addEdge(vertex2, vertex3);

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

空のインターフェイスとして渡されたポインター値を逆参照するにはどうすればよいですか?

分類Dev

クラスタイプをパラメータとして渡し、それにキャストするにはどうすればよいですか?

分類Dev

C ++:構築中にマップの値をコピーせずに、キーと値をコンストラクターに渡してマップを作成するにはどうすればよいですか?

分類Dev

テンキーをマウスポインタ(移動とクリック)として使用するにはどうすればよいですか?

分類Dev

TypeScriptでクラスタイプをマップキーとして使用するにはどうすればよいですか?

分類Dev

Androidスマートフォンをラップトップのマイクとして使用するにはどうすればよいですか?

分類Dev

Python GUIを使用してボタンとテキストボックスをカスタマイズするにはどうすればよいですか?

分類Dev

関数ポインタをクラステンプレートパラメータとして渡すにはどうすればよいですか?

分類Dev

タイプスクリプトインターフェイスをクラス属性として宣言するにはどうすればよいですか?

分類Dev

Vagrant Base(ベースライン)ボックスにカスタムsshキーを含めて参照するにはどうすればよいですか?(virtualbox)

分類Dev

コンストラクターに渡された新しいインスタンスを使用して、LightInjectにすでに登録されている型をオーバーライドするにはどうすればよいですか?

分類Dev

新しいクラスを作成するときにクラスのインスタンスを渡すにはどうすればよいですか?

分類Dev

テンプレート化されたクラスインスタンスをテンプレートパラメータとして別のテンプレートに渡すにはどうすればよいですか?

分類Dev

Modelmapperを使用して、default / no-argsコンストラクターのないクラスにマップするにはどうすればよいですか?

分類Dev

コマンドラインからBitlockerを有効にするときに、「エラー:キーをディスクに保存しようとしてエラーが発生しました」を解決するにはどうすればよいですか?

分類Dev

「キャンバス:リサイクルされたビットマップエラーを使用しようとしています」を修正するにはどうすればよいですか?

分類Dev

「キャンバス:リサイクルされたビットマップエラーを使用しようとしています」を修正するにはどうすればよいですか?

分類Dev

型のインスタンスのパラメータとして抽象クラスを渡すにはどうすればよいですか?

分類Dev

タイムスタンプがインデックスとして分類されていない場合、タイムスタンプでデータフレームをスライスするにはどうすればよいですか?

分類Dev

コマンドラインでアクセスしたすべてのURLをキャプチャするにはどうすればよいですか?

分類Dev

スマートRTHリクエストをインターセプトしてキャンセルするにはどうすればよいですか?

分類Dev

LinuxでテキストモードまたはDMからプライマリデスクトップとして仮想マシンを起動するにはどうすればよいですか?

分類Dev

Riderのテンプレートに引数として渡されたクラスを確認するにはどうすればよいですか?

分類Dev

Swift-タイプ/オブジェクト(名前またはインスタンス)をメソッドに渡してから(a)タイプを取得する(b)インスタンス化するにはどうすればよいですか?

分類Dev

pygameでクリックしたときにスプライトを変更するボタンを作成するにはどうすればよいですか?

分類Dev

パラメータをクラスに渡して、そのパラメータがコンストラクタに渡されたときにJFrameが移動するようにするにはどうすればよいですか?

分類Dev

サーバーから HTML タグ付きのテキストを取得し、HTML マークアップを使用してクライアント側に表示するにはどうすればよいですか? (phpとangularjsを使用)

分類Dev

Gitインデックスをテキストとして操作(ダンプおよびロード)するにはどうすればよいですか?

分類Dev

Windowsエクスプローラーでフォントをファイルとして参照するにはどうすればよいですか

Related 関連記事

  1. 1

    空のインターフェイスとして渡されたポインター値を逆参照するにはどうすればよいですか?

  2. 2

    クラスタイプをパラメータとして渡し、それにキャストするにはどうすればよいですか?

  3. 3

    C ++:構築中にマップの値をコピーせずに、キーと値をコンストラクターに渡してマップを作成するにはどうすればよいですか?

  4. 4

    テンキーをマウスポインタ(移動とクリック)として使用するにはどうすればよいですか?

  5. 5

    TypeScriptでクラスタイプをマップキーとして使用するにはどうすればよいですか?

  6. 6

    Androidスマートフォンをラップトップのマイクとして使用するにはどうすればよいですか?

  7. 7

    Python GUIを使用してボタンとテキストボックスをカスタマイズするにはどうすればよいですか?

  8. 8

    関数ポインタをクラステンプレートパラメータとして渡すにはどうすればよいですか?

  9. 9

    タイプスクリプトインターフェイスをクラス属性として宣言するにはどうすればよいですか?

  10. 10

    Vagrant Base(ベースライン)ボックスにカスタムsshキーを含めて参照するにはどうすればよいですか?(virtualbox)

  11. 11

    コンストラクターに渡された新しいインスタンスを使用して、LightInjectにすでに登録されている型をオーバーライドするにはどうすればよいですか?

  12. 12

    新しいクラスを作成するときにクラスのインスタンスを渡すにはどうすればよいですか?

  13. 13

    テンプレート化されたクラスインスタンスをテンプレートパラメータとして別のテンプレートに渡すにはどうすればよいですか?

  14. 14

    Modelmapperを使用して、default / no-argsコンストラクターのないクラスにマップするにはどうすればよいですか?

  15. 15

    コマンドラインからBitlockerを有効にするときに、「エラー:キーをディスクに保存しようとしてエラーが発生しました」を解決するにはどうすればよいですか?

  16. 16

    「キャンバス:リサイクルされたビットマップエラーを使用しようとしています」を修正するにはどうすればよいですか?

  17. 17

    「キャンバス:リサイクルされたビットマップエラーを使用しようとしています」を修正するにはどうすればよいですか?

  18. 18

    型のインスタンスのパラメータとして抽象クラスを渡すにはどうすればよいですか?

  19. 19

    タイムスタンプがインデックスとして分類されていない場合、タイムスタンプでデータフレームをスライスするにはどうすればよいですか?

  20. 20

    コマンドラインでアクセスしたすべてのURLをキャプチャするにはどうすればよいですか?

  21. 21

    スマートRTHリクエストをインターセプトしてキャンセルするにはどうすればよいですか?

  22. 22

    LinuxでテキストモードまたはDMからプライマリデスクトップとして仮想マシンを起動するにはどうすればよいですか?

  23. 23

    Riderのテンプレートに引数として渡されたクラスを確認するにはどうすればよいですか?

  24. 24

    Swift-タイプ/オブジェクト(名前またはインスタンス)をメソッドに渡してから(a)タイプを取得する(b)インスタンス化するにはどうすればよいですか?

  25. 25

    pygameでクリックしたときにスプライトを変更するボタンを作成するにはどうすればよいですか?

  26. 26

    パラメータをクラスに渡して、そのパラメータがコンストラクタに渡されたときにJFrameが移動するようにするにはどうすればよいですか?

  27. 27

    サーバーから HTML タグ付きのテキストを取得し、HTML マークアップを使用してクライアント側に表示するにはどうすればよいですか? (phpとangularjsを使用)

  28. 28

    Gitインデックスをテキストとして操作(ダンプおよびロード)するにはどうすればよいですか?

  29. 29

    Windowsエクスプローラーでフォントをファイルとして参照するにはどうすればよいですか

ホットタグ

アーカイブ