これは私の問題です。私はそれに対応するオブジェクトへの都市の名前をマッピングする(HashMap
Vertex
のオブジェクトを持っている。ArrayListのリンク上の値を持つデータ構造を維持する
私はこれらの都市間のルートをモデル化し、グラフを作成する必要があります。
私の現在の実装では、持っているArrayList
Edge
のオブジェクトを持っています2 Vertex
と、各オブジェクトのパスコスト。私はその後、Vertex
とEdge
オブジェクトのこれらのセットを使用して隣接リストを作る、すなわち
for (Edge e : edges) {
ArrayList<Vertex> list = adjList.get(e.v1);
if (list == null)
list = new ArrayList<>();
list.add(e.v2);
adjList.put(e.v1, list);
}
edges: ArrayList of edges having (v1,v2,weight) in each object
list : The adjacency list for the vertex v1.
adjList: HashMap which has all the lists index by the vertex.
しかし、このモデルでは、私の隣接リスト隣接長リストに辺の長さを格納しないので、辺の長さを求めるたびに、edges
リストを走査し、2つの頂点を持つオブジェクトを見つけなければなりません。
この隣接リスト自体にエッジの長さを含めるきれいな方法があるかどうかを知りたいと思います。
私のVertex
オブジェクトは1頂点につき1回しか作成されないので、その中に1辺の長さを格納すると、その中に入る他のすべての辺を上書きするため格納できません。
ヒント:あなたの質問は何とか混乱しています。あなたのコメントは、adjListはHashMapでなければならないと言います。しかしそれはリストのようですね!一般的には、あなたの命名を改善することができます! – GhostCat
@GhostCat adjListはすべての頂点のすべてのリストを含むHashMapです。 O(1)の頂点の各リストにアクセスするために、私はそれをHashMapにしました。 –