什么是哈希表?(a hashtable?)

在计算机科学中,哈希表是一种用于存储数据的数据结构,它由一系列值(称为键)组成,这些值与一系列相应的值(称为数组)配对。例如,企业名称可能与其地址配对。通常,数组中的每个值都有一个称为哈希的位置号。散列函数通常是一组指令或算法,将每个键值映射到散列,例如,将企业名称连接到其地址、电话号码和业务类别。散列函数的目的是将每个键分配给数组中唯一的对应值;这通常被称为散列。哈希函数必须正确格式化,哈希表才...

在计算机科学中,哈希表是一种用于存储数据的数据结构,它由一系列值(称为键)组成,这些值与一系列相应的值(称为数组)配对。例如,企业名称可能与其地址配对。通常,数组中的每个值都有一个称为哈希的位置号。散列函数通常是一组指令或算法,将每个键值映射到散列,例如,将企业名称连接到其地址、电话号码和业务类别。散列函数的目的是将每个键分配给数组中唯一的对应值;这通常被称为散列。哈希函数必须正确格式化,哈希表才能正常工作。
.

A hashtable is a data structure for storing data that consists of a list of values, called keys, which get paired with a corresponding list of values, called an array.

哈希表对一组数据的性能取决于其哈希函数的效率。好的散列函数通常提供键的统一查找和对应数组中映射的均匀分布。当两个键被分配给相同的对应值时,会发生哈希冲突。当发生哈希冲突时,通常再次执行哈希函数,直到找到唯一的对应值;这通常会导致更长的散列时间。虽然哈希表中的键数通常是固定的,但有时可能会有重复的键。即使如此,一个设计良好的哈希表具有有效的哈希函数,可以将每个键映射到数组中唯一的对应值。

有时,哈希表中低效的哈希函数也可能产生一组映射。如果哈希函数为现有键创建一组映射,这可能会增加查找相应值所需的时间。由于大多数哈希函数通常查找数组中的下一个可用位置,因此这会减慢对未来键的哈希。如果已经分配了大量值,则通常需要更长的时间来查找新键的未分配值。

负载因子是与哈希函数的效率相关的另一个概念;加载因子是与哈希表中相应数组的总大小相关的已存在哈希的数量。它通常通过将已分配的键的数量除以相应数组的大小来定义。随着加载因子的增加,一个好的散列函数通常会在某一点上保持恒定数量的冲突和集群。通常,此阈值可用于确定具有给定密钥数的哈希函数的效率,以及何时可能需要新的哈希函数。

许多计算机科学研究人员一直在努力产生完美的散列函数——在负载因子不断增加的情况下,该函数不会产生碰撞或簇。理论上,生成完美哈希表的关键是生成完美的哈希函数。一般来说,研究人员认为,随着负载因子的增加,一个完美的哈希函数应该具有恒定的性能——冲突和集群的数量。在最坏的情况下,一个完美的散列函数仍然允许在不达到阈值的情况下进行常量散列。

  • 发表于 2021-12-10 15:07
  • 阅读 ( 148 )
  • 分类:互联网

你可能感兴趣的文章

通用(generic)和c中的非泛型集合#(non-generic collection in c#)的区别

...小。 一些非泛型集合类是ArrayList、SortedList、Stack、Queue和HashTable。每个集合类实现IEnumerable接口。它有助于使用foreach循环遍历集合中项的元素。 ArrayList是数组的一种替代方法。如果有一个数组可以存储10个元素,它就不能存储20...

  • 发布于 2020-10-24 01:08
  • 阅读 ( 348 )

为什么每次服务的密码数据库泄露时都要担心

...一的哈希。这将需要更多的计算时间和内存。 这就是为什么服务部门经常说不用担心。使用适当安全程序的服务应该说它们使用的是咸密码哈希。如果他们只是说密码是“散列的”,那就更让人担心了。例如,LinkedIn对他们的密...

  • 发布于 2021-04-08 14:27
  • 阅读 ( 189 )

您的密码是如何存储在互联网上的(以及何时您的密码强度无关紧要)

...题。但是,当这些网站中的一个被黑客入侵时,这意味着什么?你如何保护自己?以下是你的密码是如何存储在互联网上的,以及当你使用的网站被破坏时对你意味着什么。一个站点有很多方法可以存储您的密码,有些方法比其...

  • 发布于 2021-05-26 07:29
  • 阅读 ( 161 )

散列表(hashmap)和哈希表(hashtable)的区别

...三个通用的Map实现:HashMap、TreeMap和LinkedHashMap。HashMap和Hashtable是Java中用于在哈希表中存储键/值对的两个集合。Hashtable是一个同步映射,HashMap是一个非同步映射。不过,如果需要使用同步映射,哈希表比在同步包装器中使用哈...

  • 发布于 2021-06-25 20:14
  • 阅读 ( 255 )

散列表(hashmap)和容器(hashset)的区别

...识值。就像Vector和Stack在ArrayList和LinkedList中有替换一样,Hashtable在HashMap中也有替换。它扩展了AbstractMap,使用内部哈希表表示来实现Map接口。与其他通用实现类似,HashMap支持Map的可选方法,允许空值,并且不同步。 什么是哈希...

  • 发布于 2021-06-25 21:32
  • 阅读 ( 341 )

索引(indexing)和散列(hashing)的区别

...索引和哈希是与DBMS相关的两个概念。 覆盖的关键领域 1.什么是索引-定义,功能2.什么是哈希-定义,功能3.索引和哈希的区别是什么-关键区别的比较 关键术语 数据库管理系统,**索引,散列,索引,有序索引,主索引,辅助索...

  • 发布于 2021-07-01 07:28
  • 阅读 ( 354 )

散列表(hashmap)和容器(hashset)的区别

...含值。 功能 HashMap和HashSet之间的另一个区别是HashMap使用Hashtable存储基于键的值,而HashSet使用散列机制存储元素。 结论 HashMap和HashSet的主要区别在于HashMap属于Map接口层次结构,与Collection接口没有关联,而HashSet属于Collection接口...

  • 发布于 2021-07-01 07:58
  • 阅读 ( 279 )

散列表(hashmap)和linkedhashmap公司(linkedhashmap)的区别

...方面,LinkedHashMap保持数据**的顺序。 覆盖的关键领域 1.什么是HashMap–定义,功能2.什么是LinkedHashMap–定义,功能3.HashMap和LinkedHashMap的区别是什么–主要区别的比较 关键术语 哈希表 什么是散列表(hashmap)? HashMap是使用哈希表实...

  • 发布于 2021-07-01 10:43
  • 阅读 ( 168 )

散列表(hashmap)和linkedhashmap公司(linkedhashmap)的区别

...集合。它也是一种Java映射,是HashMap的一个子类,实现了Hashtable和映射的链表。元素在HashMap中输入的元素顺序不正确。已知元素按键**顺序排列。订单HashMap不保留元素的输入顺序。因为它们是按键**顺序排列的,所以保留了输入...

  • 发布于 2021-07-10 11:48
  • 阅读 ( 209 )

散列表(hashmap)和哈希表(hashtable)的区别

...起的数据结构。在Java中,两者有一些重要的区别,比如HashTable是同步的,HashMap是不同步的。哈希表不允许空键。但是,HashMap允许一个null键和任意数量的null值。 HashMap和hashTable是Java集合中的数据结构。它们使用键值对来存储...

  • 发布于 2021-07-13 20:48
  • 阅读 ( 324 )
soxw1247
soxw1247

0 篇文章

相关推荐