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

如何在两个节点之间建立多个链接(java),java,map,hyperlink,nodes,edges,Java,Map,Hyperlink,Nodes,Edges,我正在尝试编写一个代码,在其中选择两个节点并在它们之间创建一个或多个连接。问题是我只能创建一个连接,该连接由一个到边和一个从边组成,im在hashmap中使用listedge 问题是我不知道如何在两个节点之间建立多个链接,它只注册一个链接。 有什么建议我可以让它注册几个链接吗?我需要创建另一张地图吗 public class ListGraph<G> implements Graph<G> { private Map<G, List<ListEdge<G

我正在尝试编写一个代码,在其中选择两个节点并在它们之间创建一个或多个连接。问题是我只能创建一个连接,该连接由一个到边和一个从边组成,im在hashmap中使用listedge

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

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));      
    }
公共类ListGraph实现图形{
私有映射节点=新HashMap();
公共无效添加节点(G ny){
如果(!nodes.containsKey(纽约))
nodes.put(ny,newarraylist());
}
公共void connect(G from、G to、字符串名称、整数权重){
getEdgesFrom(from).add(newlistedge(to,weight,name));
getEdgesFrom(to).add(newlistedge(from,weight,name));
}

添加到地图时,如果找到键,则该值将替换为新值

你必须做的是

1) 查找键是否已存在(检查
get()
返回
null
ListEdge

2) 如果为空,您只需像在代码中那样添加


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

这是否正确?
public void addEdges(G from,G to,String name,int weight){If(getEdge(from,to)!=null){getEdgesFrom(from).add(new ListEdge(to,weight,name));getEdgesFrom(to).add(new ListEdge(from,weight,name));}else return;}
(抱歉,我不知道如何正确编辑它)。如果您在问题中显示
getEdge()
的代码就好了(我假设
getEdgesFrom()
getEdgesTo())
将类似)。这里是
public ListEdge getEdge(G from,G to){if(!nodes.containsKey(to))抛出新的NoSuchElementException(“Ingen sådan nod!”);for(ListEdge-edge:getEdgesFrom(from))if(edge.getDestination()==to)返回edge;返回null;}
您无法将对象与
==
进行比较,请改用
equals()
进行比较。对于其他情况,如果
getEdge(from,to)
返回空值,则新代码不会执行任何操作。只有当所有
(from,to)
对在开始时都使用空列表初始化时,新代码才可以。