Java中常用的hash函数有什么
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,今天就跟大家聊聊有关Java中常用的hash函数有什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。public class HashUtil
千家信息网最后更新 2025年02月06日Java中常用的hash函数有什么
今天就跟大家聊聊有关Java中常用的hash函数有什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
public class HashUtils { private static final int crctab[] = { 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; public static int crc32Hash(String key) { int n = key.length(); int hash = n; for (int i = 0; i < n; ++i) hash = (hash >> 8) ^ crctab[(hash & 0xff) ^ key.charAt(i)]; return hash; } public static int additiveHash(String key) { int n = key.length(); int hash = n; for (int i = 0; i < n; i++) hash += key.charAt(i); return hash ^ (hash >> 10) ^ (hash >> 20); } public static int rotatingHash(String key) { int n = key.length(); int hash = n; for (int i = 0; i < n; i++) hash = (hash << 4) ^ (hash >> 28) ^ key.charAt(i); return (hash & 0x7FFFFFFF); } /** * @param key * @param prime * 31 131 1313 13131 131313 etc.. * @return */ public static int BKDRHash(String key, int prime) { int hash = 0; int n = key.length(); for (int i = 0; i < n; ++i) hash = prime * hash + key.charAt(i); return (hash & 0x7FFFFFFF); } public static int FNVHash(String key) { final int p = 16777619; int hash = (int) 2166136261L; int n = key.length(); for (int i = 0; i < n; i++) hash = (hash ^ key.charAt(i)) * p; hash += hash << 13; hash ^= hash >> 7; hash += hash << 3; hash ^= hash >> 17; hash += hash << 5; return (hash & 0x7FFFFFFF); } public static int RSHash(String key) { int b = 378551; int a = 63689; int hash = 0; int n = key.length(); for (int i = 0; i < n; i++) { hash = hash * a + key.charAt(i); a = a * b; } return (hash & 0x7FFFFFFF); } public static int JSHash(String key) { int hash = 1315423911; int n = key.length(); for (int i = 0; i < n; i++) { hash ^= ((hash << 5) + key.charAt(i) + (hash >> 2)); } return (hash & 0x7FFFFFFF); } // P. J. Weinberger Hash Function public static int PJWHash(String key) { int BitsInUnignedInt = 32; int ThreeQuarters = 24; int OneEighth = 4; int HighBits = (0xFFFFFFFF) << (BitsInUnignedInt - OneEighth); int hash = 0; int test = 0; int n = key.length(); for (int i = 0; i < n; i++) { hash = (hash << OneEighth) + key.charAt(i); if ((test = hash & HighBits) != 0) { hash = ((hash ^ (test >> ThreeQuarters)) & (~HighBits)); } } return (hash & 0x7FFFFFFF); } public static int ELFhash(String key) { int h = 0; int n = key.length(); for (int i = 0; i < n; i++) { h = (h << 4) + key.charAt(i); long g = h & 0Xf0000000L; if (g != 0) { h ^= g >> 24; h &= ~g; } } return (h & 0x7FFFFFFF); } // SDBM Hash Function public static int SDBMHash(String key) { int hash = 0; int n = key.length(); for (int i = 0; i < n; i++) { hash = key.charAt(i) + (hash << 6) + (hash << 16) - hash; } return (hash & 0x7FFFFFFF); } // DJB Hash Function public static int DJBHash(String key) { int hash = 5381; int n = key.length(); for (int i = 0; i < n; i++) { hash += (hash << 5) + key.charAt(i); } return (hash & 0x7FFFFFFF); } // AP Hash Function public static int APHash(String key) { int hash = 0; int n = key.length(); for (int i = 0; i < n; i++) { if ((i & 1) == 0) { hash ^= ((hash << 7) ^ key.charAt(i) ^ (hash >> 3)); } else { hash ^= (~((hash << 11) ^ key.charAt(i) ^ (hash >> 5))); } } return (hash & 0x7FFFFFFF); }}
看完上述内容,你们对Java中常用的hash函数有什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
内容
函数
常用
更多
知识
篇文章
行业
资讯
资讯频道
频道
J.
P.
进一
支持
有关
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全技术属于哪个专业
柳州网络安全监察科科长
网络安全原厂
深圳市网络安全培训中心
做idc卖服务器
sql 数据库怎么增加记录
手机应用软件开发讨论区
迅雷闪电网络技术平台
多媒体网络技术的学术编码
数据库create 外码
陕西新一代网络技术服务
数据库技术创建emp数据表
resset行业数据库怎么用
五款服务器配置管理工具
软件开发培训大概学费多少
从服务器管理口进入
成都嵌入式软件开发招聘网
东莞市嘀嗒互联网科技有限公司
网络打印服务器设置
网络安全的小装饰
如何把图片转换成数据库
软件开发企业交增值税吗
下列情况违反网络安全法的有
互联网科技大观
内置服务器
公安网络安全知识培训心得
英国海关数据库
柳州天气预报软件开发
服务器管理员密码怎么更改
数据库如何访问禅道