为什么每个键不能有多个值? -哈希索引

问题描述 投票:1回答:1

我搜索过的承诺,人们也提出了类似的问题,但答案似乎总是从技术上讲是不可能的,只是不说原因。我也完成了Google搜索并获得了相同的信息。

我是从与语言无关的方面提出这个问题的。我知道哈希索引的工作方式是创建一个数组,然后通过哈希函数放置一个键,该哈希函数然后映射到数组中的索引。文献总是说每个键只能有一个值,我猜这取决于数据类型/ cpu意味着内存中每个元素/索引有4,8字节。我知道,如果您使用指向另一个数组或列表的指针,则每个键可以有多个值,但是从技术上讲,您会停止声明例如key =汽车值= Audi,Blue,estate,19英寸车轮,并在该元素中放置更多字节?

是因为对索引的调用需要在一个内存中读取,并且存储桶可以达到的最大大小与数据总线宽度相同?还是因为这是编译器的设计方式,并且从理论上讲,他们可以使编译器使用声明每个键需要多个值的代码来工作?还是最终它可能仅与哈希函数有关,因为它事先知道数组的大小,并且要使所有键/值对适合连续内存,它需要每个元素仅存储一个值?

抱歉,如果我确实缺少一些明显的东西,但我不明白为什么它在技术上不可行。感谢您的收听,继续大声笑

indexing hash associative-array
1个回答
0
投票

欢迎您,罗布!

什么都不能有多个值。例如,数学中的变量不能有多个值。除非我们正在谈论quantum computing,否则X不能同时为1和0。同样,每个键不能有多个值。

另一种查看方式是使用functional dependency,它表示如果键X的值分别为Y和Z,则您可以将键X两次,一次指向Y,一次指向Z。这意味着您将需要重复的键,这在哈希映射中是无法做到的。

我希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.