Language agnostic 若哈希表将两个键映射到一个表中的相同值,我将如何取回键
有人能给我解释一下吗?如果哈希表将两个键映射到同一个值,我将如何取回我的键。虽然有一个链表存储了两个连续的值,但当使用公共值获取键/元素时,谁来决定吐出哪个键。谢谢你回答我的问题 映射到同一散列值的两个键称为冲突。任何使用哈希存储和查找数据的集合都必须能够处理冲突。例如,可以使用包含多个项目(每次冲突)的每个哈希的链接列表来完成此操作Language agnostic 若哈希表将两个键映射到一个表中的相同值,我将如何取回键,language-agnostic,data-structures,hashtable,Language Agnostic,Data Structures,Hashtable,有人能给我解释一下吗?如果哈希表将两个键映射到同一个值,我将如何取回我的键。虽然有一个链表存储了两个连续的值,但当使用公共值获取键/元素时,谁来决定吐出哪个键。谢谢你回答我的问题 映射到同一散列值的两个键称为冲突。任何使用哈希存储和查找数据的集合都必须能够处理冲突。例如,可以使用包含多个项目(每次冲突)的每个哈希的链接列表来完成此操作 这样的集合还存储实际的密钥。因此,如果它发现了冲突,它仍然可以扫描这些项目以找到精确的匹配。由于额外的扫描,速度不如没有冲突时快。映射到同一哈希值的两个键称为冲突
这样的集合还存储实际的密钥。因此,如果它发现了冲突,它仍然可以扫描这些项目以找到精确的匹配。由于额外的扫描,速度不如没有冲突时快。映射到同一哈希值的两个键称为冲突。任何使用哈希存储和查找数据的集合都必须能够处理冲突。例如,可以使用包含多个项目(每次冲突)的每个哈希的链接列表来完成此操作 这样的集合还存储实际的密钥。因此,如果它发现了冲突,它仍然可以扫描这些项目以找到精确的匹配。由于额外的扫描,速度不如没有冲突时快。a)您假设的是哈希表的特定实现 b) 这在很大程度上取决于实现 哈希表用于映射键->值。反向映射可能是不可能的,正如您所确定的,可能表现不好。a)您假设的是哈希表的特定实现 b) 这在很大程度上取决于实现
哈希表用于映射键->值。逆映射可能是不可能的,正如您所指出的,可能表现不好。哈希表的设计目的不是使用存储的值返回键,而是相反。但是,如果您需要此类功能(具有双向关系键值),那么您有多种选择:
- 使用两个哈希表,一个存储键->值,另一个存储关系的另一部分-值->键
- 使用双向哈希表实现(Google有一个规范),通过在内部执行相同的操作来支持这一点
- 使用两个哈希表,一个存储键->值,另一个存储关系的另一部分-值->键
- 使用双向哈希表实现(Google有一个规范),通过在内部执行相同的操作来支持这一点
- 失败。不要插入新的键/值,但指出该键已存在
- 替换现有的键/值并返回旧的键/值对
- 保留原始密钥,但更新/替换此密钥的新值
- 失败。不要插入新的键/值,但指出该键已存在
- 替换现有的键/值并返回旧的键/值对
- 保留原始密钥,但更新/替换此密钥的新值