1

我正在尝试编写一个代码,您可以在其中选择两个节点并在它们之间创建一个或多个连接。问题是我只能创建一个连接,该连接由一个 to-edge 和一个 from-edge 组成,我使用 hashmap 中的listingge。

问题是我不知道如何在两个节点之间建立多个链接,它只注册一个链接。有什么建议可以让我注册几个链接吗?我需要创建另一个地图吗?

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访问 Map 时,如果找到键,则将值替换为新值。

你必须做的是。

1)查找密钥是否已经存在(检查是否get()返回nullListEdge<G>

2)如果它是空的,你就像add你在你的代码中一样。

3) 如果它不为空,则检索 List并将新项目添加到 list 中,而不是添加到地图中。所以,现在您有一个G指向 a 的键,其中ListEdge包含多个元素。

于 2012-08-20T21:19:08.213 回答