一:学些心得
1 getHash函数的设计最牛的是Unix中处理字符串的ELFHash();当然也可以自己写一个比较简单的getHash函数关键在于去mod M的M值,使器均匀的分布(一般是不大于hash_size的某一个素数,接近于2的某次幂);但是有一点需要注意就是返回的hash值必须是正值。2 处理冲突的方法:链地址法是比较好的方法了(静态动态都可以的);二次哈希(一般是加key值)再探测;或者加1再探测
3 插入和查找以及删除的第一步都是一样的,getHash(),时候存在……
4 对于链表发,插入法包括头插入法(插入操作比较简单,当然其不判断数据的重复插入),和链表尾插入法(稍微复杂一些,边遍历边判断数据的重复与否,和查找类似)
5 虽然比不上c++的STL中的hash_map类,没有他的各种构造函数,以及 = 赋值构造函数;更没有其强大的iterator迭代器,但是本函数基本上实现了hash的主要功能,而且把int 改为T也可以实现类似泛型的功能。
6 请看 哈希(hash) 之 ELFHash 和 静态hash(模拟链接法) ELHash的实现