哈希表和关联数组的"key"和"value"术语是否可以互换使用?



我一直在学习CS课程。

当我学习C时,我了解了哈希表。

哈希

表是需要哈希函数将"键"映射到整数值的数组。该值将是数组中的索引。

"键" -> [哈希函数] ->值

数组[值] = "键"

现在,我正在学习PHP,我对关联数组的使用感到非常困惑。在PHP中,我们传入一个密钥(例如$_POST["key"]),它将为我们提供一个值。所以这里的"键"是数组的索引,不像 C 哈希表,它们的索引是哈希函数输出的值。

$_POST["键"] = 值

我做了很多搜索,并了解到哈希表和关联数组不是 100% 相同的,但我非常困惑为什么这两种不同的场景以不同的方式使用术语"键"和"值"。

我在这里看到什么问题吗?

"

key"和"value"的意思不是一回事。

是你输入到哈希表或PHP关联数组中的东西,或者通常,"map"来获取

您遇到的困惑是,您在第一个示例中从哈希表中返回的值随后被用作不同事物(数组)的(数组索引)。就像一个人既可以是父母又可以是孩子一样,数字(或其他任何东西)既可以是键(在一件事中)也可以是一个值(在另一件事中)。这是它的作用与你使用它的东西的关系的问题。

一般来说,"键"是用于从某种数据结构中唯一标识和检索某些"值"的一段数据。但是,当然,"价值"这个词也可以意味着许多其他东西。

例如,如果你的语言有像Python或JavaScript这样的内置哈希表,你可以说table[key] = value来存储一些东西,value = table[key]来检索它。如果要创建自己的哈希表,则可能首先必须计算键的哈希函数,然后根据哈希计算数组索引,然后将该值放在该索引处的数组中。编写者可能会将哈希函数的结果称为"哈希值",并且他可能会将数组索引称为数组"键",所以是的,它可能会令人困惑。

我倾向于说"关键"这个词在你的CS课程的第一次考试/陈述中使用错误:

哈希

表是需要哈希函数将"键"映射到整数值的数组。该值将是数组中的索引。

该声明最好是:

哈希

表是需要哈希函数将某种输入值映射到整数值(称为哈希值)的数组。哈希值将是数组中的索引。

输入值 -> [哈希函数] ->哈希值

此外,声明:

数组[值] = "键"

是错误的,因为哈希函数可以为多个输入值生成相同的哈希值。通常,array[value]将生成哈希函数计算相同哈希值的所有输入值的列表。

关联数组是一种数组表示法,用于告诉机器从数据集(数组名称)中检索与唯一键(数组索引)关联的信息。在机器下面将执行一个算法来搜索/检索此信息。编程语言可以为程序员提供关联数组(符号)来帮助程序员编写程序。所以它只是一个数组符号,它不是数组索引,就像 C 中的哈希数组一样。

最新更新