哈希函数:
哈希函数是任何可以把任何长度的数据映射到固定长度的数据的函数。
也就是任何输入都能算出一个哈希值。
这个函数不可逆,也就是无法通过输入结果算出key值;
计算方法:hash值计算
如 :
put("Kobe",90);
put("Katie",89);
"Kobe"的哈希值:042E0136
哈希值:
哈希函数返回的这个固定长度叫哈希值。
HashMap:
hashmap数据结构:数组加链表,Java8,优化成链表长度到8时转换成红黑树储存结构。
1.表示一个节点的代码实现:
class node{
int hash;//key的哈希值
k Key;
v Value;
node Next;
}
2.往hashmap中插入一个节点
put(k Key,v Value){
hash(Key);//插入时求key的哈希值(唯一)
index = hash&(n-1);//哈希值与数组长度取余,来判断应该插入数组的哪个位置,如果该位置已经有数据就向链表或者tree上append一个节点。
}
3.通过key来查询数据,O(n)
v get(Object key){
hash(Key);//取哈希值
index = hash&(n-1);//求出index,即数组上所在的位置
}