Hash 什么';散列信息的目的是什么?
在课堂上被教过如何创建哈希表之后,我不明白哈希数据什么时候有用。在我看来,散列所做的只是将信息存储在数组中的半随机位置。我想知道任何数据存储后如何变得有用Hash 什么';散列信息的目的是什么?,hash,Hash,在课堂上被教过如何创建哈希表之后,我不明白哈希数据什么时候有用。在我看来,散列所做的只是将信息存储在数组中的半随机位置。我想知道任何数据存储后如何变得有用 我的问题是:哈希信息有益的例子有哪些?如何以任何有组织的方式检索数据?它似乎被放置在难以取回的任意位置 哈希可用于多种用途: 它可以用来比较大量的数据。您为数据创建散列,存储散列,然后如果要比较数据,只需比较散列即可 散列可以用来索引数据。可以在哈希表中使用它们来指向正确的行。如果要快速查找记录,请计算数据的哈希值,并直接转到相应哈希记录所指
我的问题是:哈希信息有益的例子有哪些?如何以任何有组织的方式检索数据?它似乎被放置在难以取回的任意位置 哈希可用于多种用途:
如果有人以半随机顺序存储散列,那一定是因为上述原因,或者是因为他们只想存储信息的消息摘要以进行比较、查找重复项等,而不是作为数据的索引。散列数据有几个典型的原因。在您引用的示例中,您将对数据进行散列,并使用该数据作为键来提取散列项的实际值。散列数据通常被称为键,它引用一个bucket,在该bucket中可以找到实际的非散列值 另一个典型的原因是创建散列值的签名,以便检查该值是否已被其他人更改。由于根据使用的算法,通常很少有两个项目散列为相同的值,因此您可以重新散列一个值,并将其与保存的散列值进行比较,以检查项目是否仍然相同。 在类中创建的哈希表的主要用途之一是当您需要快速的O(1)查找时间时。您将有两个组件,键和值 哈希函数将密钥转换为哈希。该散列是一个数字,具体来说,它是数组中数据的索引 因此,当您需要在哈希表中查找Agscala的声誉,并且使用您的用户名作为密钥时,几乎不需要时间就可以找到相关的值。它只是重新散列你的用户名和viola,这是你要找的数据的索引。您不必遍历整个数组来查找特定的值
作为参考,上的Wikipedia页面相当不错。哈希是一种用于快速键查找的技术。它使人们能够更有效地查找值,而不是从头到尾扫描列表。您使用过字典或集合吗?它们通常以哈希表的形式实现,因为可以快速找到与键关联的值
{
'WA': 'Washington',
'WV': 'West Virginia',
'WY': 'Wyoming'
}
#1) 如果您查看SQL Server中的一些查询计划,您会发现哈希对于没有足够的索引覆盖您的列的查询非常重要。Dave,感谢您添加了这一点。您可能会添加一个保护措施,以防止数据意外损坏,作为哈希的另一个用途。