如何在两个节点之间建立多个链接(java)

时间:2012-08-20 21:14:47

标签: java map hyperlink nodes edges

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

问题是我无法弄清楚如何在两个节点之间建立多个链接,它只注册一个链接。 任何建议如何我可以这样注册几个链接?我需要创建另一张地图吗?

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));      
    }

1 个答案:

答案 0 :(得分:2)

当您add到地图时,如果找到该密钥,则该值将替换为新值。

你必须做的是。

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

2)如果它为null,则只需add,就像在代码中那样。

3)如果它不为null,则检索List 并将新项目添加到列表,而不是地图。因此,现在您有一个键G指向具有多个元素的ListEdge