1

2つのノードを選択し、それらの間に1つまたは複数の接続を作成するコードを作成しようとしています。問題は、接続を1つしか作成できないことです。接続は、ハッシュマップ内のlistedgeを使用して、to-edgeとfrom-edgeで構成されます。

問題は、2つのノード間に複数のリンクを作成する方法がわからないことです。1つのリンクしか登録されません。いくつかのリンクを登録するようにするにはどうすればよいですか?別のマップを作成する必要がありますか?

public class ListGraph<G> implements Graph<G> {
private Map<G, List<ListEdge<G>>> nodes = new HashMap<G, List<ListEdge<G>>>();

public void addNode(G ny) {
    if (!nodes.containsKey(ny))
        nodes.put(ny, new ArrayList<ListEdge<G>>());
}

public void connect(G from, G to, String name, int weight) {
        getEdgesFrom(from).add(new ListEdge<G>(to, weight, name));
        getEdgesFrom(to).add(new ListEdge<G>(from, weight, name));      
    }
4

1 に答える 1

2

マップにadd移動すると、キーが見つかった場合、値は新しいものに置き換えられます。

あなたがしなければならないことはです。

1) キーが既に存在するかどうかを確認します ( get()returnnullまたは anかどうかを確認しますListEdge<G>)

2) null の場合はadd、コードで行うのと同じです。

3) null でない場合は、List を取得し、新しいアイテムをマップではなく list に追加します。これで、複数の要素を持つGを指すキーができました。ListEdge

于 2012-08-20T21:19:08.213 に答える