我遇到了两种针对无向图(邻接表)的实现,但是我无法说出为什么将其中一种用于另一种。
我成功地用LinkedList实现了DFS / BFS,但是无法使DFS与HashMaps一起使用。
使用HashMaps,我知道插入顺序不会得到维护,这是否意味着您不能像DFS那样进行任何遍历?如果是这样,那不会违反使用HashTable的目的,因为那样您将如何在没有插入顺序的情况下正确遍历?
如何检查HashMap中是否访问了节点?当前,我已经创建了一个具有访问属性的新类Node。使用LinkedList实现,我不需要新的类,因此我直接使用了<T>
类型的变量。是否必须上新课会影响使用图的整体效率?
答案 0 :(得分:1)
HashMap是Collection
的子接口,每个集合都提供方法iterator()
,该方法将允许您遍历集合并访问其中的每个元素。
理论上,邻接表是Set
,而不是List
,因为该集合每个边不应包含多个副本。这也意味着顺序并不重要。
HashMap
使用HashSet
作为其键集,非常理想。然后,您可以为每个键使用一个代表一对的对象,例如Pair<String, String>
,也可以只使用格式为"A,B"
的String,其中A和B是顶点的名称。>
如果可以使用提供的类,那么这样做比创建自己的类要好。 JRE中提供的库是由专业人士编写的。您不太可能改善他们的表现。