Language agnostic 若哈希表将两个键映射到一个表中的相同值,我将如何取回键

Language agnostic 若哈希表将两个键映射到一个表中的相同值,我将如何取回键,language-agnostic,data-structures,hashtable,Language Agnostic,Data Structures,Hashtable,有人能给我解释一下吗?如果哈希表将两个键映射到同一个值,我将如何取回我的键。虽然有一个链表存储了两个连续的值,但当使用公共值获取键/元素时,谁来决定吐出哪个键。谢谢你回答我的问题 映射到同一散列值的两个键称为冲突。任何使用哈希存储和查找数据的集合都必须能够处理冲突。例如,可以使用包含多个项目(每次冲突)的每个哈希的链接列表来完成此操作 这样的集合还存储实际的密钥。因此,如果它发现了冲突,它仍然可以扫描这些项目以找到精确的匹配。由于额外的扫描,速度不如没有冲突时快。映射到同一哈希值的两个键称为冲突

有人能给我解释一下吗?如果哈希表将两个键映射到同一个值,我将如何取回我的键。虽然有一个链表存储了两个连续的值,但当使用公共值获取键/元素时,谁来决定吐出哪个键。谢谢你回答我的问题

映射到同一散列值的两个键称为冲突。任何使用哈希存储和查找数据的集合都必须能够处理冲突。例如,可以使用包含多个项目(每次冲突)的每个哈希的链接列表来完成此操作


这样的集合还存储实际的密钥。因此,如果它发现了冲突,它仍然可以扫描这些项目以找到精确的匹配。由于额外的扫描,速度不如没有冲突时快。

映射到同一哈希值的两个键称为冲突。任何使用哈希存储和查找数据的集合都必须能够处理冲突。例如,可以使用包含多个项目(每次冲突)的每个哈希的链接列表来完成此操作

这样的集合还存储实际的密钥。因此,如果它发现了冲突,它仍然可以扫描这些项目以找到精确的匹配。由于额外的扫描,速度不如没有冲突时快。

a)您假设的是哈希表的特定实现 b) 这在很大程度上取决于实现

哈希表用于映射键->值。反向映射可能是不可能的,正如您所确定的,可能表现不好。

a)您假设的是哈希表的特定实现 b) 这在很大程度上取决于实现


哈希表用于映射键->值。逆映射可能是不可能的,正如您所指出的,可能表现不好。

哈希表的设计目的不是使用存储的值返回键,而是相反。但是,如果您需要此类功能(具有双向关系键值),那么您有多种选择:

  • 使用两个哈希表,一个存储键->值,另一个存储关系的另一部分-值->键
  • 使用双向哈希表实现(Google有一个规范),通过在内部执行相同的操作来支持这一点

哈希表的设计目的不是使用存储值返回密钥,而是相反。但是,如果您需要此类功能(具有双向关系键值),那么您有多种选择:

  • 使用两个哈希表,一个存储键->值,另一个存储关系的另一部分-值->键
  • 使用双向哈希表实现(Google有一个规范),通过在内部执行相同的操作来支持这一点
插入已存在的密钥时,您(或创建哈希表实现的人)决定要执行的操作

两种常见的方法是:

  • 失败。不要插入新的键/值,但指出该键已存在
  • 替换现有的键/值并返回旧的键/值对
A 3。选项,我至少在任何C/C++哈希表实现中都没有见过:

  • 保留原始密钥,但更新/替换此密钥的新值
插入已存在的密钥时,您(或创建哈希表实现的人)决定要执行的操作

两种常见的方法是:

  • 失败。不要插入新的键/值,但指出该键已存在
  • 替换现有的键/值并返回旧的键/值对
A 3。选项,我至少在任何C/C++哈希表实现中都没有见过:

  • 保留原始密钥,但更新/替换此密钥的新值

等等,那么您是在尝试使用一个值来查找键,而不是相反?JJohusman,如果哈希表有一个映射巨大数据的函数,那么在它执行此操作时,如果它将两个不同的键映射到同一个值。然后使用链表按顺序将值存储在bucked中。如果一个散列值有两个键,我将如何取回我的键。您应该编辑问题,以明确您谈论的是键的散列值,而不是与键关联的对象。等等,那么您是在尝试使用值来查找键,而不是相反?JJohusman,如果散列表具有映射巨大数据的函数,当它这样做时,如果它将两个不同的键映射到相同的值。然后使用链表按顺序将值存储在bucked中。如果一个散列值有两个键,我将如何取回我的键。您应该编辑问题,以明确您所说的是键的散列值,与钥匙关联的对象无关。我可以认为乔纳森的答案是正确的,还是应该等待更好的解释。@delnan:我也认为这是OP想要问的解释。这比将“值”作为映射到的值来理解更有意义,但我们确实需要澄清。还要注意OP使用了“key”、“value”和“element”,所以element可以是您所调用的value,value可以是散列。@Fred是的,OP不完全清楚,部分原因是措辞。它肯定可以说得更清楚,但有时你只需要试着从字里行间读出来。@ranjanarr问题是,你问的东西确实有些问题。如果我的回答回答了你的问题,那么我的解释肯定是正确的。即使element=value和value=hash-value,这仍然不能解释他为什么要“取回我的密钥”。把我弄糊涂了。我能认为乔纳森的回答是正确的吗?还是我应该等待更好的解释。@delnan:我也认为这个解释是OP想要问的。它比将“value”作为映射到v的