繁体   English   中英

哈希表和关联数组的“键”和“值”术语是否可以互换使用?

[英]Are the “key” and “value” terms for hash tables and associative arrays used interchangeably?

我一直在关注CS课程入门。

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

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

“键”-> [哈希函数]->值

array [value] =“键”

现在,我正在学习PHP,并且对使用关联数组感到非常困惑。 在PHP中,我们传入一个键(例如$ _POST [“ key”],它会为我们提供一个值。因此,这里的“键”是数组的索引,与C哈希表不同,它们的索引是值由散列函数输出。

$ _POST [“ key”] =值

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

我在这里看到什么地方吗?

“键”和“值”并不相同。

关键是您将其输入到哈希表或PHP关联数组中,或者通常通过“映射”来获取

您遇到的困惑是,您从第一个示例的哈希表中获得的随后被用作另一个事物(数组)的 (数组索引)。 就像一个人既可以是父母又可以是孩子一样,数字(或其他任何东西)既可以是键(一方面)又可以是值(其他地方)。 与您使用它的东西有关,它的作用是什么。

一般而言,“键”是用于从某种数据结构中唯一标识和检索“值”的一些数据。 但是当然,“价值”一词也可能意味着许多其他东西。

例如,如果您的语言具有内置的哈希表(如Python或JavaScript),则可以说table[key] = value来存储内容,而value = table[key]来检索它。 如果要创建自己的哈希表,则可能首先必须计算键的哈希函数,然后从哈希中计算数组索引,然后将值放在该索引处的数组中。 编写者可能将哈希函数的结果称为“哈希值”,而他可能将数组索引称为数组“键”,所以是的,它可能会造成混淆。

我倾向于说在您的CS课程的第一个范例/陈述中“ key”一词使用不正确:

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

该语句最好是:

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

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

此外,该声明:

array [value] =“键”

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM