精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-27
String 类中的hash函数如下: public int hashCode() { for (int i = 0; i < len; i++) {
具体的计算公式是:s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
上面的代码可见简洁和高效。JDK的源代码。
这个hash算法的名称叫:BKDR Hash Function
This hash function comes from Brian Kernighan and Dennis Ritchie's book "The C Programming Language". It is a simple hash function using a strange set of possible seeds which all constitute a pattern of 31....31...31 etc, it seems to be very similar to the DJB hash function.
算法来自于Brian Kernighan and Dennis Ritchie合著的C语言编程一书。函数用一个特殊的种子集合构建哈希函数
该算法代码: public long BKDRHash(String str) for(int i = 0; i < str.length(); i++) return hash;
参考路径:http://www.partow.net/programming/hashfunctions/index.html
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 4050 次