我想构建一个地图算法并执行以下操作:
首先,在地图上创建所有点。
已经给出了连接的点和它们之间的长度(作为整数)。
现在的问题是找到它们之间最短的连接。
因此,我要做的是创建每个点的对象,其中包含此特定点所连接的所有点的列表以及从原点到该点的长度。
一个例子是:
从A到g,距离为7
从A到c,距离为3
其中A连接到c而A连接到g
我的问题是,如果我使用HashMap,我在查找点是否连接时会遇到一些问题,因为HashMap不容易循环,是否有更简单的方法可以做到这一点,还是有替代HashMap?
答案 0 :(得分:3)
请参阅Prim's Algorithm和Dijkstra's algorithm以及Minimum Spanning Tree
如果你有一组顶点(在你的情况下是一个点),它们之间的路径权重(在你的情况下是距离),它的MST只给出连接所有顶点的路径,并且总和是距离最小。
Prim算法和Dijkstra算法可用于查找MST。
答案 1 :(得分:1)
我相信你正在寻找Djikstra algorithm的实现(找到加权图上的最短路径)。
我认为solution符合条件
答案 2 :(得分:0)
因为您询问了循环HashMap:您应该使用迭代器为您执行此操作:
HashMap hmap = new HashMap();
hmap.put("a", "hello world!");
hmap.put("b", "goodbye!");
hmap.put("c", 42);
Set s = hmap.entrySet();
Iterator i = s.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}