包含两个变量的列表

时间:2012-10-25 07:39:29

标签: java list loops

我想构建一个地图算法并执行以下操作:

首先,在地图上创建所有点。

已经给出了连接的点和它们之间的长度(作为整数)。

现在的问题是找到它们之间最短的连接。

因此,我要做的是创建每个点的对象,其中包含此特定点所连接的所有点的列表以及从原点到该点的长度。

一个例子是:

从A到g,距离为7

从A到c,距离为3

其中A连接到c而A连接到g

我的问题是,如果我使用HashMap,我在查找点是否连接时会遇到一些问题,因为HashMap不容易循环,是否有更简单的方法可以做到这一点,还是有替代HashMap?

3 个答案:

答案 0 :(得分:3)

请参阅Prim's AlgorithmDijkstra'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());
}