Java 哈希表中的链表

Java 哈希表中的链表,java,linked-list,hashtable,Java,Linked List,Hashtable,假设我们希望重复搜索长度为N个元素的链表,每个元素都包含一个很长的字符串键。在使用给定键搜索列表中的元素时,如何利用哈希值 将键插入哈希表。然后,您可以在(理论上)恒定时间内进行搜索。将键插入哈希表。然后,您可以(理论上)在固定时间内进行搜索。您需要在搜索列表之前准备好哈希,并且您需要能够在固定时间内访问字符串的哈希。然后,您可以首先比较散列,并且仅在散列匹配时比较字符串。您可以使用哈希表而不是链表。您需要在搜索列表之前准备好哈希,并且您需要能够在固定时间内访问字符串的哈希。然后,您可以首先比较

假设我们希望重复搜索长度为N个元素的链表,每个元素都包含一个很长的字符串键。在使用给定键搜索列表中的元素时,如何利用哈希值

将键插入哈希表。然后,您可以在(理论上)恒定时间内进行搜索。

将键插入哈希表。然后,您可以(理论上)在固定时间内进行搜索。

您需要在搜索列表之前准备好哈希,并且您需要能够在固定时间内访问字符串的哈希。然后,您可以首先比较散列,并且仅在散列匹配时比较字符串。您可以使用哈希表而不是链表。

您需要在搜索列表之前准备好哈希,并且您需要能够在固定时间内访问字符串的哈希。然后,您可以首先比较散列,并且仅在散列匹配时比较字符串。您可以使用哈希表而不是链表。

字符串的哈希值(
hashCode
)有点像字符串的id。不完全独特,但通常非常独特。您可以使用
HashMap
存储字符串键及其值
HashMap
,顾名思义,使用字符串的哈希值来高效地存储和检索值。

字符串(
hashCode
)的哈希值有点像字符串的id。不完全独特,但通常非常独特。您可以使用
HashMap
存储字符串键及其值
HashMap
,顾名思义,使用字符串的哈希值来高效地存储和检索值。

不确定您在这里使用的约束条件(即,根据字符串的大小,这可能占用过多内存),但是,如果您必须维护链表,您可以创建一个HashMap,将字符串映射到它们在列表中的位置,这将允许您通过两个恒定时间操作从列表中检索任何字符串。

不确定您在这里使用的约束是什么(即,根据字符串的大小,这可能占用过多内存),但如果您必须维护链接列表,则可以创建一个哈希映射,将字符串映射到它们在列表中的位置,这将允许您通过两个固定时间操作从列表中检索任何字符串。

将其放入哈希集中。搜索算法将为插入的每个字符串值使用哈希。

将其放入哈希集中。search算法将对插入的每个字符串值使用哈希。

这是一个特定于Java的问题,还是需要一个通用的算法。您是否能够将键移动到另一个数据结构,还是必须使用链表?这是一个特定于Java的问题,还是需要一个通用的算法。您是否能够o将键移动到另一个数据结构,还是必须使用链表?java中的哈希表提供平均恒定时间的添加/删除(即θ(1)),理论上不是。理论上,它们提供o(n)添加/删除的时间到了。有很多哈希表实现。你是指哈希表类吗?我说的是一般的哈希表。java中的哈希表平均提供恒定的添加/删除时间(即θ(1)),而不是理论上。理论上,它们提供O(n)添加/删除的时间到了。有很多哈希表实现。你指的是哈希表类吗?我说的是一般的哈希。即使你有一个字符串在链表中的位置,你仍然需要遍历整个列表来检索它。它没有随机访问。啊,是的-很好的一点。通常我试着去思考在发布之前,但显然我这次失败了-谢谢你纠正了我的错误!即使你有一个字符串在链接列表中的位置,你仍然需要遍历整个列表来检索它。它没有随机访问。啊,是的-很好的一点。通常我会在发布之前尝试实际思考,但显然我这次失败了-谢谢你纠正我的错误!