我试图编写一个代码,在其中选择两个节点并在它们之间创建一个或多个连接。问题是我只能创建一个连接,该连接由一个边缘和一个从边缘组成,我在哈希图中使用了listge。

问题是我无法弄清楚如何在两个节点之间建立多个链接,它仅注册一个链接。
任何建议,我怎么能做到,所以它注册了几个链接?我需要创建另一个地图吗?

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

最佳答案

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

您必须要做的是。

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

2)如果为空,则就像在代码中一样add

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

关于java - 如何在两个节点之间建立多个链接(java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12045292/

10-11 00:44