繁体   English   中英

使用 LinkedList 与 HashMap 实现无向图有什么区别? 遍历 BFS/DFS 哪个更好?

[英]What is the difference between implementing an undirected graph with LinkedList vs HashMap? What is better for traversing BFS/DFS?

我遇到了无向图(邻接表)的两种实现,但我不知道为什么要使用一个而不是另一个。

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

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

如何检查 HashMap 中是否访问了节点? 目前,我创建了一个新的 class 节点,该节点具有访问属性。 使用 LinkedList 实现,我不需要新的 class ,所以我直接使用了<T>类型的变量。 必须制作新的 class 会影响使用图表的整体效率吗?

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

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

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

如果您可以使用提供的类,那么这样做比自己制作更好。 JRE 中提供的库是由专业人员编写的。 你不可能提高他们的表现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM