Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hash 什么';散列信息的目的是什么?_Hash - Fatal编程技术网

Hash 什么';散列信息的目的是什么?

Hash 什么';散列信息的目的是什么?,hash,Hash,在课堂上被教过如何创建哈希表之后,我不明白哈希数据什么时候有用。在我看来,散列所做的只是将信息存储在数组中的半随机位置。我想知道任何数据存储后如何变得有用 我的问题是:哈希信息有益的例子有哪些?如何以任何有组织的方式检索数据?它似乎被放置在难以取回的任意位置 哈希可用于多种用途: 它可以用来比较大量的数据。您为数据创建散列,存储散列,然后如果要比较数据,只需比较散列即可 散列可以用来索引数据。可以在哈希表中使用它们来指向正确的行。如果要快速查找记录,请计算数据的哈希值,并直接转到相应哈希记录所指

在课堂上被教过如何创建哈希表之后,我不明白哈希数据什么时候有用。在我看来,散列所做的只是将信息存储在数组中的半随机位置。我想知道任何数据存储后如何变得有用


我的问题是:哈希信息有益的例子有哪些?如何以任何有组织的方式检索数据?它似乎被放置在难以取回的任意位置

哈希可用于多种用途:

  • 它可以用来比较大量的数据。您为数据创建散列,存储散列,然后如果要比较数据,只需比较散列即可

  • 散列可以用来索引数据。可以在哈希表中使用它们来指向正确的行。如果要快速查找记录,请计算数据的哈希值,并直接转到相应哈希记录所指向的记录。(这假设您有一个指向实际记录的哈希排序列表)

  • 它们可以用于数字签名等加密应用

  • 散列可以用来生成看似随机的字符串

  • 以下是wikipedia列出的哈希函数的应用程序:

  • 关于哈希表,这里有几点需要注意:

    如果您使用的是散列表,则表中的散列应以排序方式进行。如果没有,则必须在哈希列上创建索引。一些实现以排序的方式单独存储散列,并指向原始记录


    如果有人以半随机顺序存储散列,那一定是因为上述原因,或者是因为他们只想存储信息的消息摘要以进行比较、查找重复项等,而不是作为数据的索引。

    散列数据有几个典型的原因。在您引用的示例中,您将对数据进行散列,并使用该数据作为键来提取散列项的实际值。散列数据通常被称为键,它引用一个bucket,在该bucket中可以找到实际的非散列值

    另一个典型的原因是创建散列值的签名,以便检查该值是否已被其他人更改。由于根据使用的算法,通常很少有两个项目散列为相同的值,因此您可以重新散列一个值,并将其与保存的散列值进行比较,以检查项目是否仍然相同。

    在类中创建的哈希表的主要用途之一是当您需要快速的O(1)查找时间时。您将有两个组件,键和值

    哈希函数将密钥转换为哈希。该散列是一个数字,具体来说,它是数组中数据的索引

    因此,当您需要在哈希表中查找Agscala的声誉,并且使用您的用户名作为密钥时,几乎不需要时间就可以找到相关的值。它只是重新散列你的用户名和viola,这是你要找的数据的索引。您不必遍历整个数组来查找特定的值


    作为参考,上的Wikipedia页面相当不错。

    哈希是一种用于快速键查找的技术。它使人们能够更有效地查找值,而不是从头到尾扫描列表。

    您使用过字典或集合吗?它们通常以哈希表的形式实现,因为可以快速找到与键关联的值

    {
    'WA': 'Washington',
    'WV': 'West Virginia',
    'WY': 'Wyoming'
    }
    

    #1) 如果您查看SQL Server中的一些查询计划,您会发现哈希对于没有足够的索引覆盖您的列的查询非常重要。Dave,感谢您添加了这一点。您可能会添加一个保护措施,以防止数据意外损坏,作为哈希的另一个用途。