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