用LinkedList与HashMap实现无向图有什么区别?遍历BFS / DFS有什么更好的方法?

问题描述 投票:0回答:1

我遇到了无向图(邻接列表)的两种实现,但是我无法说出为什么要在另一种之上使用。

我成功地通过LinkedList实现了DFS / BFS,但是无法使DFS与HashMaps一起使用。

使用HashMaps,我知道插入顺序不会得到维持,这是否意味着您不能像DFS那样进行任何遍历?如果是这样,那不会违反使用HashTable的目的,因为那样您将如何在没有插入顺序的情况下正确遍历?

如何检查是否在HashMap中访问了节点?当前,我已经创建了一个具有访问属性的新类Node。使用LinkedList实现,我不需要新的类,因此我直接使用了type变量。是否必须上新课会影响使用图的整体效率?

java graph hashmap traversal
1个回答
0
投票

[HashMap是Collection的子接口,每个集合都提供iterator()方法,该方法将允许您遍历集合并访问其中的每个元素。

邻接表在理论上是Set,而不是List,因为该集合每个边不应包含多个副本。这也意味着顺序并不重要。

HashMap使用HashSet作为其键集,这是理想的。然后,您可以为每个键使用一个代表一对的对象,例如Pair<String, String>,也可以只使用格式为"A,B"的字符串,其中A和B是顶点的名称。

如果您可以使用所提供的类,那比做自己的更好。 JRE中提供的库是由专业人士编写的。您不太可能提高他们的表现。

© www.soinside.com 2019 - 2024. All rights reserved.