[英]What is the main difference between LinkedList, HashSet and HashMap?
[英]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.