1、什么是哈希表
哈希表(hash table),这种数据结构提供了键(Key)和值 (Value)的映射关系;只要给出一个Key,就可以高效查找到它所匹配的Value,时间复杂度接近于O(1)
2、哈希函数
散列表在本质上也是一个数组,可是数组只能根据下标,像a[0]、a[1]、a[2]、a[3]、a[4]这样来访问,而散列表的Key则是以字符串类型为主的,例如以学生的学号作为Key,输入002123,查询到李四;或者以单词为Key,输入by,查询到数字46……所以需要一个“中转站”,通过某种方式,把Key和数组下标进行转换,这个中转站就叫作哈希函数。
哈希函数的实现
以Java的常用集合HashMap为例,来讲解哈希函数在Java中的实现:
在Java及大多数面向对象的语言中,每一个对象都有属于自己的hashcode,这个hashcode是区分不同对象的重要标识,无论对象自身的类型是什么,它们的 hashcode都是一个整型变量。
既然都是整型变量,想要转化成数组的下标简单的转化方式就是按照数组长度进行取模运算
index = HashCode (Key) % Array.length
通过哈希函数**可以把字符串或其他类型的Key,转化成数组的下标 index;**例如给出一个长度为8的数组,则当 key=001121时,