我正在尝试编写一个代码,您可以在其中选择两个节点并在它们之间创建一个或多个连接。问题是我只能创建一个连接,连接包括一个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));
}
答案 0 :(得分:2)
当您add
到地图时,如果找到该密钥,则该值将替换为新值。
你必须做的是。
1)查找密钥是否已经存在(检查get()
是否返回null
或ListEdge<G>
)
2)如果它为null,则只需add
,就像在代码中那样。
3)如果它不为null,则检索List 并将新项目添加到列表,而不是地图。因此,现在您有一个键G
指向具有多个元素的ListEdge
。