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