BKDRHash 算法java实现

原创 2015年11月17日 17:56:20

背景:
BKDRHash算法是字符串hash算法。是一种简单快捷的hash算法。java的继承Object类的提供的hashCode()函数也是采用这种hash算法。下面使用100000个不同字符串产生的冲突数,大概在0~3波动,使用100百万不同的字符串,冲突数大概110+范围波动。

import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

public class BKDRHash {
public static int seed = 31;

public static int getHashCode(String str){
    int hash = 0;
    for(int i = 0;i!= str.length();++i)
    {
        hash =  seed * hash + str.charAt(i);
    }
    return hash;
}

public static void main(String[] args) {
      int length = 100000;
      String str1="http://blog.csdn.net/bojie5744";
      System.out.println("str1 :"+str1.hashCode()+" system");
      System.out.println("str1 :"+getHashCode(str1)+" custom");

      Map<String,String> map = new HashMap<String,String>();
      for(int i=0;i!=length;++i){
         String str = UUID.randomUUID().toString();
         map.put(getHashCode(str)+"", str);
      }
      System.out.println("冲突数为: "+(length-map.size()));
    }

}

10万和100万不同字符串结果如下2个图所示。
这里写图片描述这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java之——Hash算法大全

实际工作过程中,要用到各种各样的Hash算法,今天就给大家带来一篇基于java实现的各类Hash算法,其他语言本质上是一样的,大家可以拿来做个参考,好了,不多说了,我们直接上代码 package co...

Java String中的hashCode函数 以BKDR Hash Function实现

String 类中的hash函数如下:     public int hashCode() {  int h = hash;  if (h == 0) {      int off = o...

HDU 1800 哈希算法BKDRHash

刚刚收集的哈希算法直接用到了,正好可以练习一下,哈哈…… 题目意思不说了,别人有解释,争分夺秒,直接说思想与代码。 刚才收集到的哈希函数有个BKDRHash的,那个是比较好比较突出的,然后在这直接...

简单的计算BKDRhash的程序

其实这个程序没什么技术含量,也就是引用了BKDRhash函数而已。。 本程序的seed为131,有不同需要的朋友可以自行修改。 #include int main() { i...

POJ 2406 Power Strings hash求匹配

题目:http://poj.org/problem?id=2406题意:给出一个不超过1e6的字符串,求这个字符串最多有多少个周期。思路:其实就是求最小周期长度,然后用字符串总长度除以最小周期长度,就...

Wannafly模拟赛 矩阵 二维矩阵hash

题目:https://www.nowcoder.com/acm/contest/submit/f8363c912a4c48a28b80f47e7102b6b8?ACMContestId=2&tagId...

sql server 2005/2008 加密存储过程解密

sql server 2005 以上存储过程无法进行查看和编辑,网上找了个解密存储过程,代码如下:Create PROCEDURE [dbo].[sp_windbi$decrypt] (@proce...

字符串哈希函数

基本概念 所谓完美哈希函数,就是指没有冲突的哈希函数,即对任意的 key1 != key2 有h(key1) != h(key2)。 设定义域为X,值域为Y, n=|X|,m=|Y|,那么肯定有m...

哈希表之bkdrhash算法解析及扩展

BKDRHASH是一种字符哈希算法 由一个字符串(比如:ad)得到其哈希值,为了减少碰撞,应该使该字符串中每个字符都参与哈希值计算,使其符合雪崩效应,也就是说即使改变字符串中的一个字节,也会对最终的哈...

哈希表之bkdrhash算法解析及扩展

哈希表之bkdrhash算法解析及扩展
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)