本文实例讲述了Java常用哈希算法。分享给大家供大家参考,具体如下:
/* * *哈希算法大全& lt; br> *推荐使用FNV1算法 * @algorithm没有 * @author Goodzzp 2006-11-20 * @lastEdit Goodzzp 2006-11-20 * @editDetail创建 */公开课HashAlgorithms {/* *//* * *加法哈希 * @param关键字符串 * @param '一个质数 * @return散列结果 */公共静态int additiveHash(字符串键,int ') { int哈希,我; (散列=key.length(),我=0;我& lt;key.length ();我+ +) 散列+=key.charAt(我); 返回(散列% '); }/* *//* * *旋转散列 * @param关键输入字符串 * @param '质数 * @return散列值 */公共静态int rotatingHash(字符串键,int ') { int哈希,我; (散列=key.length(),我=0;i祝辞;10)^ (hash>在20)); }//替代://使用:散列=(散列^ (hash>祝辞;10)^ (hash>在20)),面具;//替代:哈希%=';/* *//* * *掩码值,随便找一个值,最好是质数 */静态int M_MASK=0 x8765fed1;/* *//* * *一次一个散列 * @param关键输入字符串 * @return输出哈希值 */公共静态int oneByOneHash (String键) { int哈希,我; (散列=0,我=0;i 祝辞;3); 如果((k& 0 x01)==0)散列^=选项卡(i + 0); 如果((k& 0 x02)==0)散列^=选项卡(i + 1); 如果((k& 0 x04)==0)散列^=选项卡(i + 2); 如果((k&()==0)散列^=选项卡(i + 3); 如果((k& 0 x10)==0)散列^=选项卡(i + 4); 如果((k& 0 x20)==0)散列^=选项卡(i + 5); 如果((k& 0 x40)==0)散列^=选项卡(i + 6); 如果((k& 0 x80)==0)散列^=选项卡(i + 7); } 返回(散列,面具); }/* *//* * * Zobrist哈希 */公共静态int zobrist (char[]键,int面具,int[][]选项卡) { int哈希,我; (散列=键。长度,我=0;i Java常用哈希算法总结【经典实例】